[Orca-checkins] rev 119 - in trunk/orca: . orcallator lib src docs packages/Storable-0.6.7 packages/Storable-0.6.7/t

blair at orcaware.com blair at orcaware.com
Sat Jul 13 21:01:01 PDT 2002


Author: blair
Date: Fri, 28 Jun 2002 22:06:11 -0700
New Revision: 119

Added:
   trunk/orca/orcallator/S99orcallator.sh.in
Modified:
   trunk/orca/CHANGES
   trunk/orca/INSTALL
   trunk/orca/Makefile.in
   trunk/orca/NEWS
   trunk/orca/README
   trunk/orca/configure
   trunk/orca/configure.in
   trunk/orca/docs/Makefile.in
   trunk/orca/docs/manual.html
   trunk/orca/lib/Makefile.in
   trunk/orca/lib/homesteaders.cfg
   trunk/orca/orcallator/Makefile.in
   trunk/orca/orcallator/orcallator.cfg.in
   trunk/orca/orcallator/orcallator.se
   trunk/orca/packages/Storable-0.6.7/ChangeLog
   trunk/orca/packages/Storable-0.6.7/Makefile.PL
   trunk/orca/packages/Storable-0.6.7/README
   trunk/orca/packages/Storable-0.6.7/Storable.pm
   trunk/orca/packages/Storable-0.6.7/Storable.xs
   trunk/orca/packages/Storable-0.6.7/patchlevel.h
   trunk/orca/packages/Storable-0.6.7/t/canonical.t
   trunk/orca/packages/Storable-0.6.7/t/dclone.t
   trunk/orca/packages/Storable-0.6.7/t/dump.pl
   trunk/orca/packages/Storable-0.6.7/t/forgive.t
   trunk/orca/packages/Storable-0.6.7/t/freeze.t
   trunk/orca/packages/Storable-0.6.7/t/retrieve.t
   trunk/orca/packages/Storable-0.6.7/t/store.t
   trunk/orca/packages/Storable-0.6.7/t/tied.t
   trunk/orca/src/Makefile.in
   trunk/orca/src/orca.pl.in
Log:
Load orca-0.25 into trunk/orca.


Modified: trunk/orca/configure
==============================================================================
--- trunk/orca/configure	(original)
+++ trunk/orca/configure	Sat Jul 13 21:00:20 2002
@@ -655,7 +655,7 @@
 DIGEST_MD5_DIR=Digest-MD5-2.09
 MATH_INTERPOLATE_DIR=Math-Interpolate-1.05
 RRDTOOL_DIR=rrdtool-1.0.7.2
-STORABLE_DIR=Storable-0.6.5
+STORABLE_DIR=Storable-0.6.7
 
 
 
@@ -1738,6 +1738,7 @@
                      orcallator/restart_orcallator.sh
                      orcallator/start_orcallator.sh
                      orcallator/stop_orcallator.sh
+                     orcallator/S99orcallator.sh
                      orcallator/Makefile"
 fi
 

Modified: trunk/orca/orcallator/Makefile.in
==============================================================================
--- trunk/orca/orcallator/Makefile.in	(original)
+++ trunk/orca/orcallator/Makefile.in	Sat Jul 13 21:00:21 2002
@@ -11,10 +11,11 @@
 RRD_DIR		= @RRD_DIR@
 RRDTOOL_DIR	= @RRDTOOL_DIR@
 PERL_SCRIPTS	= orcallator_column orcallator_running
-SHELL_SCRIPTS	= restart_orcallator stop_orcallator start_orcallator
+SHELL_SCRIPTS	= restart_orcallator stop_orcallator start_orcallator \
+		  S99orcallator
 TARGETS		= $(PERL_SCRIPTS) $(SHELL_SCRIPTS)
 
-all:		$(TARGETS) orcallator.cfg
+all:		Makefile $(TARGETS) orcallator.cfg
 
 install: all
 		$(MKDIR) $(bindir)
@@ -29,6 +30,14 @@
 		$(INSTALL) -m 0644 orcallator.cfg $(libdir)
 		$(INSTALL) -m 0644 orcallator.se $(libdir)
 
+orcallator_run_at_boot: all
+		-$(RM) /etc/init.d/orcallator /etc/rc0.d/K01orcallator
+		-$(RM) /etc/rc1.d/K01orcallator /etc/rc3.d/S99orcallator
+		$(INSTALL) -m 0744 S99orcallator /etc/init.d/orcallator
+		ln /etc/init.d/orcallator /etc/rc0.d/K01orcallator
+		ln /etc/init.d/orcallator /etc/rc1.d/K01orcallator
+		ln /etc/init.d/orcallator /etc/rc3.d/S99orcallator
+
 clean:
 		$(RM) $(TARGETS)
 
@@ -63,3 +72,6 @@
 
 stop_orcallator.sh:		stop_orcallator.sh.in
 		cd .. && CONFIG_FILES=orcallator/stop_orcallator.sh ./config.status
+
+S99orcallator.sh:		S99orcallator.sh.in
+		cd .. && CONFIG_FILES=orcallator/S99orcallator.sh ./config.status

Modified: trunk/orca/orcallator/orcallator.cfg.in
==============================================================================
--- trunk/orca/orcallator/orcallator.cfg.in	(original)
+++ trunk/orca/orcallator/orcallator.cfg.in	Sat Jul 13 21:00:21 2002
@@ -15,8 +15,8 @@
 # html_dir specifies the top of the HTML tree created by Orca.
 html_dir		@HTML_DIR@
 
-# By default create .meta tag files for all GIFs so that the web
-# browser will automatically reload them.
+# By default create .meta tag files for all PNGs or GIFs so that the
+# web browser will automatically reload them.
 expire_images		1
 
 # Find files at the following times:
@@ -37,7 +37,7 @@
 # This defines where the find the source data files and the format of those
 # files.
 group orcallator {
-find_files		@ORCALLATOR_DIR@/(.*)/(?:(?:orcallator)|(?:percol))-\d{4}-\d{2}-\d{2}
+find_files		@ORCALLATOR_DIR@/(.*)/(?:(?:orcallator)|(?:percol))-\d{4}-\d{2}-\d{2}(?:\.(?:Z|gz|bz2))?
 column_description	first_line
 date_source		column_name timestamp
 date_format		%s
@@ -66,13 +66,13 @@
 data			1runq
 data			5runq
 data			15runq
-legend			1 Minute Average
-legend			5 Minute Average
-legend			15 Minute Average
-y_legend		# Processes
+legend			1 minute average
+legend			5 minute average
+legend			15 minute average
+y_legend		Number Processes
 data_min		0
 data_max		100
-href			http://www.geocities.com/~bzking/docs/orcallator.html#processes_in_run_queue
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#processes_in_run_queue
 }
 
 plot {
@@ -93,7 +93,7 @@
 plot_min		0
 plot_max		100
 rigid_min_max		1
-href			http://www.geocities.com/~bzking/docs/orcallator.html#cpu_usage
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#cpu_usage
 }
 
 plot {
@@ -103,13 +103,12 @@
 data			#proc/p5s
 line_type		area
 line_type		line1
-legend			5 min average procs/s
-legend			Peak 5 second procs/s
-y_legend		New processes/second
+legend			5 min average
+legend			Peak 5 second
+y_legend		New processes/s
 data_min		0
 data_max		100000
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#new_process_spawn_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#new_process_spawn_rate
 }
 
 plot {
@@ -121,13 +120,12 @@
 line_type		area
 legend			System total
 legend			Number web servers
-y_legend		# Processes
+y_legend		Number Processes
 data_min		0
 data_max		10000
 color			0000ff
 color			00ff00
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#number_system_processes
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#number_system_processes
 }
 
 plot {
@@ -135,12 +133,11 @@
 source			orcallator
 data			#httpds
 line_type		area
-legend			Number Web Server Processes
-y_legend		# Processes
+legend			Number web servers
+y_legend		Number Processes
 data_min		0
 data_max		10000
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#number_web_server_processes
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#number_web_server_processes
 }
 
 plot {
@@ -152,12 +149,11 @@
 line_type		line1
 legend			5 min average hits/s
 legend			Peak 5 second hits/s
-y_legend		Hits/second
+y_legend		Hits/s
 data_min		0
 color			00ff00
 color			0000ff
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#web_server_hit_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#web_server_hit_rate
 }
 
 plot {
@@ -184,8 +180,7 @@
 plot_min		0
 plot_max		100
 rigid_min_max		1
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#web_server_file_size
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#web_server_file_size
 }
 
 plot {
@@ -196,8 +191,7 @@
 legend			Bytes/s
 y_legend		Bytes/s
 data_min		0
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#web_server_data_transfer_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#web_server_data_transfer_rate
 }
 
 plot {
@@ -205,11 +199,10 @@
 source			orcallator
 data			htErr/s
 line_type		area
-legend			HTTP Errors/s
+legend			HTTP errors/s
 y_legend		Errors/s
 data_min		0
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#web_server_error_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#web_server_error_rate
 }
 
 plot {
@@ -224,8 +217,7 @@
 y_legend		Bits/s
 data_min		0
 data_max		100000000
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_bits_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_bits_per_second
 }
 
 plot {
@@ -240,8 +232,7 @@
 y_legend		Bits/s
 data_min		0
 data_max		100000000
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_bits_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_bits_per_second
 }
 
 plot {
@@ -256,8 +247,7 @@
 y_legend		Bits/s
 data_min		0
 data_max		100000000
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_bits_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_bits_per_second
 }
 
 plot {
@@ -272,24 +262,7 @@
 y_legend		Bits/s
 data_min		0
 data_max		100000000
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_bits_per_second
-}
-
-plot {
-title			%g Interface Bits Per Second: hme2
-source			orcallator
-data			1024 * 8 * hme2InKB/s
-data			1024 * 8 * hme2OuKB/s
-line_type		area
-line_type		line1
-legend			Input
-legend			Output
-y_legend		Bits/s
-data_min		0
-data_max		100000000
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_bits_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_bits_per_second
 }
 
 plot {
@@ -304,8 +277,7 @@
 y_legend		Bits/s
 data_min		0
 data_max		10000000
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_bits_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_bits_per_second
 }
 
 plot {
@@ -320,8 +292,7 @@
 y_legend		Bits/s
 data_min		0
 data_max		10000000
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_bits_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_bits_per_second
 }
 
 plot {
@@ -337,7 +308,7 @@
 data_min		0
 data_max		100000
 flush_regexps		1
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_packets_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_packets_per_second
 }
 
 plot {
@@ -352,7 +323,7 @@
 y_legend		Errors/s
 data_min		0
 flush_regexps		1
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_errors_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_errors_per_second
 }
 
 plot {
@@ -364,7 +335,7 @@
 y_legend		Nocanput/s
 data_min		0
 flush_regexps		1
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_nocanput_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_nocanput_rate
 }
 
 plot {
@@ -376,7 +347,7 @@
 y_legend		Defers/s
 data_min		0
 flush_regexps		1
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_deferred_packet_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_deferred_packet_rate
 }
 
 plot {
@@ -389,7 +360,7 @@
 data_min		0
 data_max		200
 flush_regexps		1
-href			http://www.geocities.com/~bzking/docs/orcallator.html#interface_collisions
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#interface_collisions
 }
 
 plot {
@@ -404,7 +375,7 @@
 y_legend		Bits/s
 data_min		0
 data_max		1000000000
-href			http://www.geocities.com/~bzking/docs/orcallator.html#TCP_bits_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#TCP_bits_per_second
 }
 
 plot {
@@ -419,7 +390,7 @@
 y_legend		Segments/s
 data_min		0
 data_max		20000
-href			http://www.geocities.com/~bzking/docs/orcallator.html#TCP_segments_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#TCP_segments_per_second
 }
 
 plot {
@@ -430,11 +401,11 @@
 line_type		area
 line_type		line1
 legend			Retransmission
-legend			Duplicate Received
+legend			Duplicate received
 y_legend		Percent
 data_min		0
 data_max		200
-href			http://www.geocities.com/~bzking/docs/orcallator.html#TCP_retransmission_duplicate_received_percentage
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#TCP_retransmission_duplicate_received_percentage
 }
 
 plot {
@@ -444,12 +415,12 @@
 data			tcp_Ocn/s
 line_type		area
 line_type		line1
-legend			Input - Passive
-legend			Output - Active
-y_legend		Connections/s
+legend			Input - passive
+legend			Output - active
+y_legend		New Connections/s
 data_min		0
 data_max		10000
-href			http://www.geocities.com/~bzking/docs/orcallator.html#TCP_new_connection_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#TCP_new_connection_rate
 }
 
 plot {
@@ -457,11 +428,11 @@
 source			orcallator
 data			tcp_estb
 line_type		area
-legend			# Open Connections
+legend			# open connections
 y_legend		Number Open TCP Connections
 data_min		0
 data_max		50000
-href			http://www.geocities.com/~bzking/docs/orcallator.html#TCP_number_open_connections
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#TCP_number_open_connections
 }
 
 plot {
@@ -469,10 +440,10 @@
 source			orcallator
 data			tcp_Rst/s
 line_type		area
-legend			Number TCP Resets/s
+legend			Number TCP resets/s
 y_legend		Resets/s
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#TCP_reset_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#TCP_reset_rate
 }
 
 plot {
@@ -480,10 +451,10 @@
 source			orcallator
 data			tcp_Atf/s
 line_type		area
-legend			TCP Attempt Fails/s
-y_legend		Atf/s
+legend			TCP attempt fails/s
+y_legend		TCP Attempt Fails/s
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#TCP_attempt_fail_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#TCP_attempt_fail_rate
 }
 
 plot {
@@ -492,11 +463,12 @@
 data			tcp_Ldrp/s
 data			tcp_LdQ0/s
 data			tcp_HOdp/s
-legend			TCP Listen Drops
-legend			TCP Listen Drop Q0
-legend			TCP Half Open Drops
+legend			TCP listen drops
+legend			TCP listen drop Q0
+legend			TCP half open drops
+y_legend		TCP Listen Drops/s
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#TCP_listen_drop_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#TCP_listen_drop_rate
 }
 
 plot {
@@ -508,9 +480,9 @@
 line_type		line1
 legend			Sleeps on mutex
 legend			Sleeps on mutex/cpu
-y_legend		Smtx/s
+y_legend		Sleeps on Mutex/s
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#sleeps_mutex_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#sleeps_mutex_rate
 }
 
 plot {
@@ -518,10 +490,10 @@
 source			orcallator
 data			nfs_call/s
 line_type		area
-legend			NFS Calls/s
-y_legend		Calls/s
+legend			NFS calls/s
+y_legend		NFS Calls/s
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#NFS_call_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#NFS_call_rate
 }
 
 plot {
@@ -531,11 +503,11 @@
 data			nfs_badx/s
 line_type		area
 line_type		line1
-legend			NFS Timeouts
-legend			Bad Transmits
+legend			NFS timeouts
+legend			Bad transmits
 y_legend		Count/s
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#NFS_timeouts_bad_transmits_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#NFS_timeouts_bad_transmits_rate
 }
 
 plot {
@@ -549,8 +521,7 @@
 legend			Writes/s
 y_legend		Ops/s
 data_min		0
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#disk_system_wide_reads_writes_per_second
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#disk_system_wide_reads_writes_per_second
 }
 
 plot {
@@ -564,8 +535,7 @@
 legend			Write transfer rate
 y_legend		Bytes/s
 data_min		0
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#disk_system_wide_transfer_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#disk_system_wide_transfer_rate
 }
 
 plot {
@@ -578,8 +548,7 @@
 data_min		0
 data_max		100
 plot_min		0
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#disk_run_percent
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#disk_run_percent
 }
 
 plot {
@@ -588,13 +557,12 @@
 data			mntP_(.*)
 line_type		line2
 legend			$1
-y_legend		Percent
+y_legend		Percent Used
 data_min		0
 data_max		100
 plot_min		0
 plot_max		100
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#disk_space_percent_usage
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#disk_space_percent_usage
 }
 
 plot {
@@ -603,13 +571,12 @@
 data			mntp_(.*)
 line_type		line2
 legend			$1
-y_legend		Percent
+y_legend		Percent Used
 data_min		0
 data_max		100
 plot_min		0
 plot_max		100
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#disk_inode_percent_usage
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#disk_inode_percent_usage
 }
 
 plot {
@@ -620,11 +587,11 @@
 line_type		area
 line_type		line1
 legend			DNLC
-legend			Inode Cache
+legend			Inode cache
 y_legend		Percent
 data_min		0
 data_max		100
-href			http://www.geocities.com/~bzking/docs/orcallator.html#cache_hit_percentages
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#cache_hit_percentages
 }
 
 plot {
@@ -635,60 +602,71 @@
 line_type		area
 line_type		line1
 legend			DNLC
-legend			Inode Cache
+legend			Inode cache
 y_legend		References/s
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#cache_reference_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#cache_reference_rate
 }
 
 plot {
-title			%g Inode Steal Rate
+title			%g Cache Inode Steal Rate
 source			orcallator
 data			inod_stl/s
 line_type		area
 legend			Inode w/page steals/s
 y_legend		Steals/s
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#inode_steal_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#inode_steal_rate
 }
 
 plot {
-title			%g Available Swap Space
+title			%g Memory Free
 source			orcallator
-data			1024 * swap_avail
+data			1024 * freememK
 line_type		area
-legend			Available Swap Space
+legend			Free physical memory
 y_legend		Bytes
 base			1024
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#available_swap_space
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#memory_free
 }
 
 plot {
-title			%g Page Residence Time
+title			%g Memory Page Scan Rate
+source			orcallator
+data			scanrate
+line_type		area
+legend			Page scan rate
+y_legend		Pages/s
+data_min		0
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#page_scan_rate
+}
+
+plot {
+title			%g Memory Page Residence Time
 source			orcallator
 data			page_rstim
 line_type		area
-legend			Page Residence Time
+legend			Page residence time
 y_legend		Seconds
 data_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#page_residence_time
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#page_residence_time
 }
 
 plot {
-title			%g Page Scan Rate
+title			%g Memory Available Swap Space
 source			orcallator
-data			scanrate
+data			1024 * swap_avail
 line_type		area
-legend			Page Scan Rate
-y_legend		Pages/s
+legend			Available swap space
+y_legend		Bytes
+base			1024
 data_min		0
-optional
-href			http://www.geocities.com/~bzking/docs/orcallator.html#page_scan_rate
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#available_swap_space
 }
 
 plot {
-title			%g Page Usage
+title			%g Memory Page Usage
 source			orcallator
 data			pp_kernel
 data			free_pages
@@ -699,20 +677,20 @@
 line_type		stack
 line_type		line2
 legend			Kernel
-legend			Free List
+legend			Free list
 legend			Other
-legend			System Total
-y_legend		Number of Pages
+legend			System total
+y_legend		Number Of Pages
 data_min		0
 plot_min		0
 color			00ff00
 color			ff0000
 color			0000ff
-href			http://www.geocities.com/~bzking/docs/orcallator.html#page_usage
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#page_usage
 }
 
 plot {
-title			%g Pages Locked & IO
+title			%g Memory Pages Locked & IO
 source			orcallator
 data			pageslock
 data			pagesio
@@ -720,8 +698,8 @@
 line_type		line1
 legend			Locked
 legend			IO
-y_legend		Number of Pages
+y_legend		Number Of Pages
 data_min		0
 plot_min		0
-href			http://www.geocities.com/~bzking/docs/orcallator.html#pages_locked_IO
+href			http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html#pages_locked_IO
 }

Added: trunk/orca/orcallator/S99orcallator.sh.in
==============================================================================
--- trunk/orca/orcallator/S99orcallator.sh.in	(original)
+++ trunk/orca/orcallator/S99orcallator.sh.in	Sat Jul 13 21:00:21 2002
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+
+case "$1" in
+'start')
+	if [ -x $bindir/start_orcallator ]; then
+		umask 022
+		$bindir/start_orcallator
+	else
+		echo "$0: $bindir/start_orcallator does not exist or is not executable."
+	fi
+	;;
+
+'stop')
+	if [ -x $bindir/stop_orcallator ]; then
+		$bindir/stop_orcallator
+	fi
+	;;
+
+*)
+	echo "Usage: $0 { start | stop }"
+	exit 1
+	;;
+
+esac
+exit 0

Modified: trunk/orca/orcallator/orcallator.se
==============================================================================
--- trunk/orca/orcallator/orcallator.se	(original)
+++ trunk/orca/orcallator/orcallator.se	Sat Jul 13 21:00:22 2002
@@ -4,10 +4,11 @@
 // This program logs many different system quantities to a log file
 // for later processing.
 //
-// Author: Blair Zajac <bzajac at geostaff.com>.
+// Author: Blair Zajac <bzajac at akamai.com>.
 //
 // Portions copied from percollator.se written by Adrian Cockroft.
 //
+// Version 1.20: Oct 20, 1999	Update my email address.
 // Version 1.19: Oct 13, 1999	Prevent a division by zero in calculating the
 //				mean_disk_busy if the number of disks on the
 //				system is 0.

Modified: trunk/orca/Makefile.in
==============================================================================
--- trunk/orca/Makefile.in	(original)
+++ trunk/orca/Makefile.in	Sat Jul 13 21:00:23 2002
@@ -26,6 +26,9 @@
 		(cd $$dir && $(MAKE) install);		\
 	done
 
+orcallator_run_at_boot:
+	cd orcallator && $(MAKE) orcallator_run_at_boot
+
 test_modules:
 	cd packages && $(MAKE) CFLAGS="$(CFLAGS)" test_modules
 

Modified: trunk/orca/configure.in
==============================================================================
--- trunk/orca/configure.in	(original)
+++ trunk/orca/configure.in	Sat Jul 13 21:00:23 2002
@@ -18,7 +18,7 @@
 DIGEST_MD5_DIR=Digest-MD5-2.09
 MATH_INTERPOLATE_DIR=Math-Interpolate-1.05
 RRDTOOL_DIR=rrdtool-1.0.7.2
-STORABLE_DIR=Storable-0.6.5
+STORABLE_DIR=Storable-0.6.7
 AC_SUBST(COMPRESS_ZLIB_DIR)
 AC_SUBST(DATA_DUMPER_DIR)
 AC_SUBST(DIGEST_MD5_DIR)
@@ -325,6 +325,7 @@
                      orcallator/restart_orcallator.sh
                      orcallator/start_orcallator.sh
                      orcallator/stop_orcallator.sh
+                     orcallator/S99orcallator.sh
                      orcallator/Makefile"
 fi
 

Modified: trunk/orca/lib/homesteaders.cfg
==============================================================================
--- trunk/orca/lib/homesteaders.cfg	(original)
+++ trunk/orca/lib/homesteaders.cfg	Sat Jul 13 21:00:23 2002
@@ -8,7 +8,7 @@
 # being updated constantly stops being updated.  For mathematical
 # expressions use the word interval to get the interval number for
 # the data source.
-warn_email		bzajac at geostaff.com
+warn_email		root at localhost
 late_interval		1.1 * interval
 base_dir		/export/home/webmastr/server-root/document-root/operations/
 
@@ -86,7 +86,7 @@
   <font face="Arial,Helvetica">
     Please email requests for enhancements, comments, or suggestions
     to Dr. Blair Zajac
-    <a href="mailto:bzajac at geostaff.com">&lt;bzajac at geostaff.com&gt;</a>.
+    <a href="mailto:bzajac at akamai.com">&lt;bzajac at akamai.com&gt;</a>.
   </font>
 
 # These are the same plot except one of them do not allow deletions.

Modified: trunk/orca/lib/Makefile.in
==============================================================================
--- trunk/orca/lib/Makefile.in	(original)
+++ trunk/orca/lib/Makefile.in	Sat Jul 13 21:00:23 2002
@@ -6,7 +6,7 @@
 MKDIR		= @MKDIR@
 INSTALL		= @INSTALL@
 
-all:		orca.gif.hex rrdtool.gif.hex
+all:		Makefile orca.gif.hex rrdtool.gif.hex
 
 # Create a hex file representation of orca.gif that can be stored inside
 # orca.pl.

Modified: trunk/orca/INSTALL
==============================================================================
--- trunk/orca/INSTALL	(original)
+++ trunk/orca/INSTALL	Sat Jul 13 21:00:23 2002
@@ -26,8 +26,10 @@
     a) Install the SE toolkit.
     b) Apply a patch to the SE 3.0 toolkit if necessary.
     c) Examine Orca/orcallator programs.
-    d) Run start_orcallator on all systems.
-    e) Edit orcallator.cfg.
+    d) Install orcallator boot and halt time start/stop scripts
+       in /etc/rc?.d/.
+    e) Run start_orcallator on all systems.
+    f) Edit orcallator.cfg.
 
 12) Run Orca.
 
@@ -98,7 +100,7 @@
     Digest::MD5			2.00 or greater		2.09
     Math::IntervalSearch	1.05 or greater		1.05
     RRDs			1.0.7.2 or greater	1.0.7.2
-    Storable			0.6.3 or greater	0.6.5
+    Storable			0.6.3 or greater	0.6.7
 
     All five of these modules are included with the Orca distribution
     in the packages directory.  When you configure Orca in step 4),
@@ -167,10 +169,10 @@
 
     Storable
 
-      http://www.perl.com/CPAN/authors/id/RAM/Storable-0.6.5.tar.gz
+      http://www.perl.com/CPAN/authors/id/RAM/Storable-0.6.7.tar.gz
 
-      % gunzip -c Storable-0.6.5.tar.gz | tar xvf -
-      % cd Storable-0.6.5
+      % gunzip -c Storable-0.6.7.tar.gz | tar xvf -
+      % cd Storable-0.6.7
       % perl Makefile.PL
       % make
       % make test
@@ -365,7 +367,21 @@
          orcallator_column  - print selected columns from orcallator output
          orcallator_running - run to see if any orcallators are not running
 
-    d) Run start_orcallator on all systems.
+    d) Install orcallator boot and halt time start/stop scripts
+       in /etc/rc?.d/.
+
+       If you wish to have orcallator run when the machine boots, you can
+       install the included S99orcallator file into the proper /etc/*.d/
+       directories.  To make installing this easier, you can say
+
+       % make orcallator_run_at_boot
+
+       from either the top level Makefile or the orcallator/Makefile.
+       It will remove any old orcallator files and install S99orcallator
+       into /etc/init.d/orcallator, /etc/init.d/rc0.d/K01orcallator,
+       /etc/init.d/rc1.d/K01orcallator, and /etc/rc3.d/S99orcallator.
+
+    e) Run start_orcallator on all systems.
 
        Log in as root on all the systems you want to watch and run:
 
@@ -375,7 +391,7 @@
        update interval, which will be between 2.5 to 7.5 minutes after
        orcallator is started.
 
-    e) Edit orcallator.cfg.
+    f) Edit orcallator.cfg.
 
        You need to edit the installed orcallator.cfg file and remove
        all unneeded references.  In particular, you'll want to change

Modified: trunk/orca/src/Makefile.in
==============================================================================
--- trunk/orca/src/Makefile.in	(original)
+++ trunk/orca/src/Makefile.in	Sat Jul 13 21:00:23 2002
@@ -12,7 +12,7 @@
 SHELL_SCRIPTS	=
 TARGETS		= $(PERL_SCRIPTS) $(SHELL_SCRIPTS)
 
-all:		$(TARGETS)
+all:		Makefile $(TARGETS)
 
 install: all
 		$(MKDIR) $(bindir)

Modified: trunk/orca/src/orca.pl.in
==============================================================================
--- trunk/orca/src/orca.pl.in	(original)
+++ trunk/orca/src/orca.pl.in	Sat Jul 13 21:00:24 2002
@@ -33,7 +33,7 @@
 
 # This is the version of Orca.
 use vars qw($VERSION);
-$VERSION = '0.24';
+$VERSION = '0.25';
 
 my $IMAGE_SUFFIX = 'png';
 
@@ -85,6 +85,12 @@
 my $opt_rrd_update_only = 0;
 my $opt_generate_gifs   = 0;
 
+# To prevent compiling of the subroutine sub { die $_[0] } every time an
+# eval block is entered, compile it only once here and use it everywhere.
+sub die_when_called {
+  die $_[0];
+}
+
 # Set up a signal handler to force looking for new files.
 my $force_find_files = 0;
 sub handle_hup {
@@ -141,13 +147,13 @@
 <table cellpadding=0 border=0>
   <tr>
     <td width=350 valign=center>
-      <a href="http://www.geocities.com/~bzking/">
+      <a href="http://www.gps.caltech.edu/~blair/orca/">
         <img width=186 height=45 border=0 src="orca.gif" alt="Orca Home Page"></a>
       <br>
       <font FACE="Arial,Helvetica" size=2>
         Orca-$::VERSION by
-        <a href="http://www.geocities.com/~bzking/">Blair Zajac</a>
-        <a href="mailto:bzajac\@geostaff.com">bzajac\@geostaff.com</a>.
+        <a href="http://www.gps.caltech.edu/~blair/">Blair Zajac</a>
+        <a href="mailto:blair\@akamai.com">blair\@akamai.com</a>.
       </font>
     </td>
     <td width=120 valign=center>
@@ -874,7 +880,7 @@
   $_[0]->{_rrd_update_time};
 }
 
-sub add_gif {
+sub add_image {
   my ($self, $gif) = @_;
   $self->{_created_gifs}{$gif->name} = $gif;
   $self;
@@ -1010,7 +1016,7 @@
   bless $_[1], $_[0];
 }
 
-package Orca::SourceDataFile;
+package Orca::SourceFile;
 
 use Carp;
 use Digest::MD5 qw(md5);
@@ -1020,8 +1026,8 @@
 @ISA = qw(Orca::DataFile);
 
 # This is a static variable that lists all of the column names for a
-# particular files key.
-my %files_key_column_names;
+# particular group.
+my %group_column_names;
 
 # This caches the reference to the array holding the column
 # descriptions for files that have their column descriptions in the
@@ -1036,7 +1042,7 @@
 
 sub new {
   unless (@_ == 10) {
-    confess "$0: Orca::SourceDataFile::new passed incorrect number of arguments.\n";
+    confess "$0: Orca::SourceFile::new passed incorrect number of arguments.\n";
   }
 
   my ($class,
@@ -1059,7 +1065,7 @@
   $self->{_warn_email}         = $warn_email;
   $self->{_my_rrd_list}        = [];
   $self->{_all_rrd_ref}        = undef;
-  $self->{_files_keys}         = {};
+  $self->{_group_keys}         = {};
   $self->{_choose_data_sub}    = undef;
 
   $self->{_column_description} = $column_description;
@@ -1107,13 +1113,13 @@
 
 # For each files key store make a note of the column description names
 # that appear.
-sub add_files_keys {
+sub add_groups {
   my $self = shift;
 
-  foreach my $files_key (@_) {
-    $self->{_files_keys}{$files_key} = 1;
+  foreach my $group_name (@_) {
+    $self->{_group_keys}{$group_name} = 1;
     foreach my $description (@{$self->{_column_description}}) {
-      $files_key_column_names{$files_key}{$description} = 1;
+      $group_column_names{$group_name}{$description} = 1;
     }
   }
 }
@@ -1213,37 +1219,38 @@
 }
 
 sub add_plots {
-  # Make sure that the user has called the add_files_keys method and
+  # Make sure that the user has called the add_groups method and
   # inserted at least one key.
-  unless (keys %files_key_column_names) {
-    confess "$0: Orca::SourceDataFile::add_files_keys must be called before add_plots.\n";
+  unless (keys %group_column_names) {
+    confess "$0: Orca::SourceFile::add_groups must be called before add_plots.\n";
   }
 
   unless (@_ == 8) {
-    confess "$0: Orca::SourceDataFile::add_plots passed wrong number of arguments.\n";
+    confess "$0: Orca::SourceFile::add_plots passed wrong number of arguments.\n";
   }
 
   my ($self,
       $config_options,
       $config_files,
       $config_plots,
-      $files_key,
-      $group,
+      $group_name,
+      $subgroup_name,
       $rrd_data_files_ref,
-      $gif_files_ref) = @_;
+      $image_files_ref) = @_;
 
-  # See if we have already done all the work for a plot with this
-  # files_key, group, and column description.  Use an MD5 hash instead
-  # of a very long key.  Store into a hash the column names found in
-  # this file for this files key.  Finally, create a hash keyed by
-  # column name with a value of the index into the column description
-  # array.  for this files key.
+  # See if we have already done all the work for a plot with this group_name,
+  # subgroup_name, and column description.  Use an MD5 hash instead of a very
+  # long key.  Store into a hash the column names found in this file for this
+  # group.  Finally, create a hash keyed by column name with a value of the
+  # index into the column description array.
   my @column_description = @{$self->{_column_description}};
   my %column_description;
   for (my $i=0; $i<@column_description; ++$i) {
     $column_description{$column_description[$i]} = $i;
   }
-  my $plot_key  = join("\200", $files_key, $group, @column_description);
+  my $plot_key  = join("\200", $group_name,
+                               $subgroup_name,
+                               @column_description);
   my $cache_key = md5($plot_key);
   if (defined $all_rrds_cache{$cache_key}) {
     $self->{_all_rrd_ref}     = $all_rrds_cache{$cache_key};
@@ -1258,7 +1265,7 @@
   # This is the source for an anonymous subroutine that given a row
   # from a source data file returns a hash keyed by RRD name with the
   # values calculated from the row.
-  my $choose_data_expr = "sub {\n  return (\n";
+  my $choose_data_expr = "sub {\n  (\n";
 
   # Go through each plot to create and process it for this file.
   my @regexp_pos          = map { 0 } (1..@$config_plots);
@@ -1279,9 +1286,9 @@
 
     my $plot = $config_plots->[$i];
 
-    # Skip this plot if the files_key do not match.  Increment the
+    # Skip this plot if the group_name do not match.  Increment the
     # index of the next plot to handle.
-    if ($plot->{source} ne $files_key) {
+    if ($plot->{source} ne $group_name) {
       if ($oldest_regexp_index == $i) {
         $handle_regexps = 0;
         ++$oldest_regexp_index;
@@ -1312,6 +1319,8 @@
         last;
       }
     }
+
+    # 1) Regular expression match in the first data with additional datas.
     if ($number_datas == 1 and $regexp_element_index != -1) {
 
       # If we've gone up to the last column to match, then go on.
@@ -1385,6 +1394,8 @@
       $i = $plot->{flush_regexps} ? $oldest_regexp_index : $i + 1;
       next unless $new_data_index;
     }
+
+    # 2) Regular expression match in the first data with no additional datas.
     elsif ($number_datas > 1 and $regexp_element_index != -1) {
       $handle_regexps = 1;
 
@@ -1407,7 +1418,7 @@
       for (;$regexp_pos[$i]<@column_description; ++$regexp_pos[$i]) {
         @matches = $column_description[$regexp_pos[$i]] =~ /$regexp/;
         if (@matches) {
-            $column_description = $column_description[$regexp_pos[$i]];
+          $column_description = $column_description[$regexp_pos[$i]];
           last;
         }
       }
@@ -1435,7 +1446,7 @@
       $plot->{data}[0][$regexp_element_index] = $column_description;
       my $d                = Data::Dumper->Dump([$plot], [qw(plot)]);
       $plot->{creates}     = $creates;
-      my $count = 1;
+      my $count            = 1;
       foreach my $match (@matches) {
         $d =~ s/\$$count/$match/mge;
         $d =~ s/\(.+\)/$match/mge;
@@ -1443,18 +1454,19 @@
       }
       {
         local $SIG{__DIE__}  = 'DEFAULT';
-        local $SIG{__WARN__} = sub { die $_[0] };
+        local $SIG{__WARN__} = \&::die_when_called;
         eval $d;
       }
-      die "$0: internal error: eval on\n\n$d\nOutput: $@\n" if $@;
+      die "$0: internal error: eval on\n   $d\nOutput: $@\n" if $@;
 
       # Either increment the index or reset it to the oldest regexp
       # index.
       $old_i = $i;
       $i = $plot->{flush_regexps} ? $oldest_regexp_index : $i + 1;
     }
-    else {
 
+    # 3) All others.
+    else {
       $old_i = $i++;
       ++$oldest_regexp_index unless $handle_regexps;
     }
@@ -1466,160 +1478,193 @@
     # convert the element to an index the @_ array where the data will
     # be pulled from.  If there is not a match, then see if the
     # element matches a name from one of the other column names from
-    # the same files key.  In this case the data argument for this
-    # file will not be used.
+    # the same group.  In this case the data argument for this file
+    # will not be used.
     my @datas;
     foreach my $one_data (@{$plot->{data}}) {
       push(@datas, [@$one_data]);
     }
-    my $optional  = $plot->{optional};
-    my $match_any = 0;
+    my $required = $plot->{required};
     for (my $j=0; $j<@datas; ++$j) {
       my $match_one_data = 0;
       for (my $k=0; $k<@{$datas[$j]}; ++$k) {
         my $element = $datas[$j][$k];
         my $pos;
         if (defined ($pos = $column_description{$element})) {
-          $datas[$j][$k] = "\$_[$pos]";
+          $datas[$j][$k]  = "\$_[$pos]";
           $match_one_data = 1;
         }
-        elsif (defined $files_key_column_names{$files_key}{$element}) {
+        elsif (defined $group_column_names{$group_name}{$element}) {
           my $m = $old_i + 1;
-          warn "$0: $element in `data @{$plot->{data}[$j]}' in plot #$m not replaced since it is not in file `" . $self->filename . "'.\n" unless $optional;
+          warn "$0: $element in `data @{$plot->{data}[$j]}' in plot #$m not replaced since it is not in file `" . $self->filename . "'.\n" if $required;
           $datas[$j] = undef;
           last;
         }
       }
-      # If there were no substitutions, then warn about it.
-      if (!$match_one_data and !$optional) {
+      # If there were no substitutions and verbose is on, then warn about it.
+      if (!$match_one_data and $opt_verbose > 1) {
         my $m = $old_i + 1;
         warn "$0: warning: no substitutions performed for `data @{$plot->{data}[$j]}' in plot #$m in `" . $self->filename . "'.\n";
       }
-      $match_any = $match_any || $match_one_data;
     }
 
-    # Skip this plot if no matches were found and the plot is
-    # optional.
-    next if (!$match_any and $optional);
+    # Because users may place code into the data statements that do not
+    # have any substitutions, then the only way to check for the validity
+    # is to create valid anonymous subroutines and try them.  Invalid
+    # ones will either return undef or fail to compile.  If the plot is
+    # required, then replace invalid subroutines with one that returns 0.
+    # Here the results of eval'ing a test subroutine on a data is kept.
+    # The cached result is either a 1 or a 0.  To test the subroutine,
+    # pass the newly created subroutine a fake array of numbers, where the
+    # array has as manay elements as there are in one line from the file.
+    # If it is an invalid subroutine but the plot is required, then set
+    # the subroutine to return 'U', which is RRD's way of declaring
+    # undefined data.
+    my @fake_numbers = 1 .. @column_description;
+    my @substituted_data_expressions;
+    my $one_ok_data = 0;
+    for (my $j=0; $j<@datas; ++$j) {
+      my $data_expression;
+      if (defined $datas[$j]) {
+        $data_expression = "@{$datas[$j]}";
+        my $sub_expr     = "sub { $data_expression }";
+        my $sub_expr_md5 = md5($data_expression);
+        my $eval_result  = $choose_data_sub_cache{$sub_expr_md5};
+        unless (defined $eval_result) {
+          $eval_result = 1;
+          my $test_value;
+          my $message;
+          {
+            local $SIG{__DIE__}  = 'DEFAULT';
+            local $SIG{__WARN__} = \&::die_when_called;
+            my $sub              = eval $sub_expr;
+            eval { $test_value   = &$sub(@fake_numbers) };
+          }
+          if ($@) {
+            $eval_result = 0;
+            $@ =~ s/\s+$//g;
+            my $m = $old_i + 1;
+            $message = "$0: warning: cannot compile `$sub_expr' for plot #$m `data @{$plot->{data}[$j]}': $@\n";
+          }
+          elsif (!defined $test_value) {
+            $eval_result = 0;
+            my $m = $old_i + 1;
+            $message = "$0: warning: testing of `$sub_expr' for plot #$m `data @{$plot->{data}[$j]}' yielded an undefined value.\n";
+          }
+          if ($message and ($required or $opt_verbose > 1)) {
+            warn $message;
+          }
+          $choose_data_sub_cache{$sub_expr_md5} = $eval_result;
+        }
+        $data_expression = undef unless $eval_result;
+      }
+      # If the data_expression did not work, but the plot is required, then
+      # have the expression return 'U';
+      if (!$data_expression and $plot->{required}) {
+        $data_expression = "'U'";
+      }
+      $one_ok_data = 1 if $data_expression;
+      push(@substituted_data_expressions, $data_expression);
+    }
+
+    # If none of the data expressions compiled, then go on to the next
+    # unless the plot is required.
+    next if (!$one_ok_data and !$required);
 
     # At this point we have a plot to create.
 
-    # For each data source in this plot, try to create an anonymous
-    # subroutine to see if the eval succeeds.  Place each data source
-    # into a large anonymous subroutine that takes a single row of data
-    # from an input source file and returns a hash keyed by the named
+    # For each valid data source in this plot, place each the substituted
+    # code a large anonymous subroutine that takes a single row of data
+    # from an input source file and returns a hash keyed by the name
     # used for a RRD and the value calculated using the input row of
     # data.  Also create an unique Orca data file name for this plot
-    # and a name for this plot that does not include the group.
+    # and a name for this plot that does not include the subgroup name.
     my @my_rrds;
     my @my_short_rrds;
-    my @no_group_name;
-    my @group_name;
+    my @name_with_subgroup;
+    my @name_without_subgroup;
     my $previous_group    = '';
     my $previous_subgroup = '';
-    for (my $j=0; $j<@datas; ++$j) {
+    for (my $j=0; $j<@substituted_data_expressions; ++$j) {
 
-      my $expr         = undef;
-      my $sub_expr_sub = undef;
-      my $data_name    = join('_', @{$plot->{data}[$j]});
+      my $original_data_expression    = join('_', @{$plot->{data}[$j]});
+      my $substituted_data_expression = $substituted_data_expressions[$j];
 
-      if (defined $datas[$j]) {
-        $expr            = "@{$datas[$j]}";
-        my $sub_expr     = "sub {\n  return $expr;\n}\n";
-        my $sub_expr_md5 = md5($sub_expr);
-
-        unless (defined ($sub_expr_sub = $choose_data_sub_cache{$sub_expr_md5})) {
-          {
-            local $SIG{__DIE__}  = 'DEFAULT';
-            local $SIG{__WARN__} = sub { die $_[0] };
-            $sub_expr_sub        = eval $sub_expr;
-          }
-          if ($@) {
-            $sub_expr_sub = undef;
-            unless ($optional) {
-              my $m = $old_i + 1;
-              warn "$0: warning: bad evaluation of commands for plot #$m `data @{$plot->{data}[$j]}':\n$sub_expr\nOutput: $@\n";
-            }
-          }
-          $choose_data_sub_cache{$sub_expr_md5} = $sub_expr_sub;
-        }
-      }
-
-      my $name = "${files_key}_${group}_${data_name}";
-      push(@no_group_name, "${files_key}_${data_name}");
-      push(@group_name, $name);
+      my $name_with_subgroup = "${group_name}_${subgroup_name}_${original_data_expression}";
+      push(@name_with_subgroup, $name_with_subgroup);
+      push(@name_without_subgroup, "${group_name}_${original_data_expression}");
 
       # Create a short name that may exclude the group and subgroup if the
       # previous data had the same group and subgroup.
       my $short_name_with_subgroup;
-      if ($files_key eq $previous_group) {
-        if ($group eq $previous_subgroup) {
-          $short_name_with_subgroup = "__$data_name";
+      if ($group_name eq $previous_group) {
+        if ($subgroup_name eq $previous_subgroup) {
+          $short_name_with_subgroup = "__$original_data_expression";
         }
         else {
-          $short_name_with_subgroup = "_${group}_${data_name}";
-          $previous_subgroup        = $group;
+          $short_name_with_subgroup = "_${subgroup_name}_${original_data_expression}";
+          $previous_subgroup        = $subgroup_name;
         }
       }
       else {
-        $previous_group           = $files_key;
-        $previous_subgroup        = $group;
-        $short_name_with_subgroup = $name;
+        $previous_group           = $group_name;
+        $previous_subgroup        = $subgroup_name;
+        $short_name_with_subgroup = $name_with_subgroup;
       }
 
       # Create a new RRD only if it doesn't already exist and if a valid
       # get data subroutine is created.  Keep the choose_data_sub for this
       # file.
-      if (defined $sub_expr_sub) {
-        $choose_data_expr .= "    '$name', $expr,\n";
-        unless (defined $rrd_data_files_ref->{$name}) {
+      if (defined $substituted_data_expression) {
+        $choose_data_expr .= "    '$name_with_subgroup', $substituted_data_expression,\n";
+        unless (defined $rrd_data_files_ref->{$name_with_subgroup}) {
           my $rrd_file = Orca::RRDFile->new($config_options,
                                             $config_files,
-                                            $files_key,
-                                            $group,
-                                            $name,
+                                            $group_name,
+                                            $subgroup_name,
+                                            $name_with_subgroup,
                                             $plot);
-          $rrd_data_files_ref->{$name} = $rrd_file;
+          $rrd_data_files_ref->{$name_with_subgroup} = $rrd_file;
         }
         $self->{_all_rrd_ref}             = $rrd_data_files_ref;
-        $my_rrd_list{$name}               = 1;
-        push(@my_rrds, $name);
+        $my_rrd_list{$name_with_subgroup} = 1;
+        push(@my_rrds, $name_with_subgroup);
         push(@my_short_rrds, $short_name_with_subgroup);
       }
     }
 
     # Generate a new plot for these data.
-    my $gif;
-    my $group_name = join(',', @group_name);
-    if (defined ($gif = $gif_files_ref->{hash}{$group_name})) {
-      $gif->add_rrds(@my_rrds);
+    my $image;
+    my $all_names_with_subgroup = join(',', @name_with_subgroup);
+    if (defined ($image = $image_files_ref->{hash}{$all_names_with_subgroup})) {
+      $image->add_rrds(@my_rrds);
     }
     else {
-      $gif = Orca::ImageFile->new($config_options,
-                                  $config_files,
-                                  $config_plots,
-                                  $files_key,
-                                  $group,
-                                  join(',', @my_short_rrds),
-                                  join(',', @no_group_name),
-                                  $plot,
-                                  $rrd_data_files_ref,
-                                  \@my_rrds);
-      $gif_files_ref->{hash}{$group_name} = $gif;
-      push(@{$gif_files_ref->{list}}, $gif);
-      push(@{$config_plots->[$old_i]{creates}}, $gif);
+      $image = Orca::ImageFile->new($config_options,
+                                    $config_files,
+                                    $config_plots,
+                                    $group_name,
+                                    $subgroup_name,
+                                    join(',', @my_short_rrds),
+                                    join(',', @name_without_subgroup),
+                                    $plot,
+                                    $rrd_data_files_ref,
+                                    \@my_rrds);
+      $image_files_ref->{hash}{$all_names_with_subgroup} = $image;
+      push(@{$image_files_ref->{list}}, $image);
+      push(@{$config_plots->[$old_i]{creates}}, $image);
     }
 
-    # Put into each RRD the GIFs that are generated from it.
+    # Put into each RRD the images that are generated from it.
     foreach my $rrd_key (@my_rrds) {
-      $rrd_data_files_ref->{$rrd_key}->add_gif($gif);
+      $rrd_data_files_ref->{$rrd_key}->add_image($image);
     }
   }
 
   $choose_data_expr .= "  );\n}\n";
   {
-    local $SIG{__DIE__}  = 'DEFAULT';
-    local $SIG{__WARN__} = sub { die $_[0] };
+    local $SIG{__DIE__}       = 'DEFAULT';
+    local $SIG{__WARN__}      = \&::die_when_called;
     $self->{_choose_data_sub} = eval $choose_data_expr;
   }
   if ($@) {
@@ -1950,7 +1995,7 @@
   my $old_found_files_ref = {};
   my $new_found_files_ref;
   my $group_files_ref;
-  my $gif_files_ref = {list => [], hash => {}};
+  my $image_files_ref = {list => [], hash => {}};
 
   # Load the current state of the source data files.
   my $saved_source_file_state = &load_state($config_options->{state_file});
@@ -1994,7 +2039,7 @@
                      $saved_source_file_state,
                      $old_found_files_ref,
                      $rrd_data_files_ref,
-                     $gif_files_ref);
+                     $image_files_ref);
 
       # Go through all of the groups and for each group and all of the
       # files in the group find the next load time in the future.
@@ -2099,7 +2144,7 @@
       # Plot the data in each gif.
       print "Updating " . uc($IMAGE_SUFFIX). "s.\n" if $opt_verbose;;
 #      system("/bin/ps -p $$ -o\"rss vsz pmem time user pid comm\"");
-      foreach my $gif (@{$gif_files_ref->{list}}) {
+      foreach my $gif (@{$image_files_ref->{list}}) {
         $gif->plot;
       }
 #      system("/bin/ps -p $$ -o\"rss vsz pmem time user pid comm\"");
@@ -2111,7 +2156,7 @@
                            $config_plots,
                            $new_found_files_ref,
                            $group_files_ref,
-                           $gif_files_ref);
+                           $image_files_ref);
         $found_new_files = 0;
       }
     }
@@ -2192,7 +2237,7 @@
       $config_plots,
       $found_files_ref,
       $group_files_ref,
-      $gif_files_ref) = @_;
+      $image_files_ref) = @_;
 
   my $html_dir         = $config_options->{html_dir};
   my $index_filename   = "$html_dir/index.html";
@@ -2284,7 +2329,7 @@
     # HTML files that are being created.  Make sure the images appear
     # in the files in the order listed in the configuration file.
     my @gifs = sort {$a->{_plot_ref}{_index} <=> $b->{_plot_ref}{_index}}
-               grep {$group eq $_->group} @{$gif_files_ref->{list}};
+               grep {$group eq $_->group} @{$image_files_ref->{list}};
     if (@gifs > 1) {
       my $href_html = "<hr>";
       for (my $i=0; $i<@gifs; ++$i) {
@@ -2395,7 +2440,7 @@
     # through and create the correct HTML files.
     foreach my $gif (@gifs) {
 
-      my $no_group_name      = escape_name($gif->no_group_name);
+      my $name_with_subgroup = escape_name($gif->no_group_name);
       my $legend_no_subgroup = $gif_legend_no_subgroup{$gif};
 
       # If this is the first time that this legend has been seen in
@@ -2407,7 +2452,7 @@
         # legend name to create this list.
         $legend_html_files{$legend_no_subgroup} = [];
         foreach my $plot_type (@gif_plot_type, 'all') {
-          my $href      = "$no_group_name-$plot_type.html";
+          my $href      = "$name_with_subgroup-$plot_type.html";
           my $filename  = "$html_dir/$href";
           my $Plot_Type = Capatialize($plot_type);
           my $fd = Orca::HTMLFile->new($filename,
@@ -2459,7 +2504,7 @@
         }
         $element .= "</b></td>\n";
         foreach my $plot_type (@gif_plot_type, 'all') {
-          $element .= "<td><a href=\"$no_group_name-$plot_type.html\">";
+          $element .= "<td><a href=\"$name_with_subgroup-$plot_type.html\">";
           $element .= Capatialize($plot_type) . "</a></td>\n";
         }
         push(@table_columns, $element);
@@ -2682,7 +2727,7 @@
       $saved_source_file_state,
       $old_found_files_ref,
       $rrd_data_files_ref,
-      $gif_files_ref) = @_;
+      $image_files_ref) = @_;
 
   my $new_found_files_ref = {};
   my $group_files         = {};
@@ -2737,9 +2782,9 @@
     }
 
     # Now for each file, create the Orca::SourceDataFile object that
-    # manages that file and the GIFs that get generated from the file.
-    # Delete from the list of filenames those files that have not
-    # successfully created Orca::SourceDataFile objects.
+    # manages that file and the images that are generated from the
+    # file.  Delete from the list of filenames those files that have
+    # not successfully created Orca::SourceDataFile objects.
     for (my $i=0; $i<@filenames;) {
       my $filename = $filenames[$i];
       # Create the object that contains this file.  Take care if the
@@ -2749,17 +2794,17 @@
           $new_found_files_ref->{$filename} = $old_found_files_ref->{$filename};
         }
         else {
-#          print "  $filename\n" if $opt_verbose;
+          print "  $filename\n" if $opt_verbose > 2;
           my $data_file =
-            Orca::SourceDataFile->new($filename,
-                                      $config_files->{$files_key}{interval},
-                                      $config_options->{late_interval},
-                                      $config_files->{$files_key}{reopen},
-                                      $config_files->{$files_key}{column_description},
-                                      $config_files->{$files_key}{date_source},
-                                      $config_files->{$files_key}{date_format},
-                                      $config_options->{warn_email},
-                                      $saved_source_file_state);
+            Orca::SourceFile->new($filename,
+                                  $config_files->{$files_key}{interval},
+                                  $config_options->{late_interval},
+                                  $config_files->{$files_key}{reopen},
+                                  $config_files->{$files_key}{column_description},
+                                  $config_files->{$files_key}{date_source},
+                                  $config_files->{$files_key}{date_format},
+                                  $config_options->{warn_email},
+                                  $saved_source_file_state);
           unless ($data_file) {
             warn "$0: warning: cannot process `$filename'.\n";
             splice(@filenames, $i, 1);
@@ -2774,7 +2819,7 @@
 
     # Register with each source data file the files keys that use it.
     foreach my $filename (@filenames) {
-      $new_found_files_ref->{$filename}->add_files_keys($files_key);
+      $new_found_files_ref->{$filename}->add_groups($files_key);
     }
 
     # Go through each source data file and register the new plots to
@@ -2787,7 +2832,7 @@
                                                    $files_key,
                                                    $group,
                                                    $rrd_data_files_ref,
-                                                   $gif_files_ref);
+                                                   $image_files_ref);
       unless (defined $group_files->{$group}) {
         $group_files->{$group} = [];
       }
@@ -2971,13 +3016,13 @@
   my $sub;
   {
     local $SIG{__DIE__}  = 'DEFAULT';
-    local $SIG{__WARN__} = sub { die $_[0] };
+    local $SIG{__WARN__} = \&::die_when_called;
     $sub = eval $expr;
   }
   die "$0: cannot evaluate command for `late_interval' on\n   $expr\nOutput: $@\n" if $@;
   {
     local $SIG{__DIE__}  = 'DEFAULT';
-    local $SIG{__WARN__} = sub { die $_[0] };
+    local $SIG{__WARN__} = \&::die_when_called;
     eval '&$sub(3.1415926) + 0;';
   }
   die "$0: cannot execute command for `late_interval' on\n$expr\nOutput: $@\n" if $@;
@@ -3073,9 +3118,9 @@
       $find =~ s:/\\./:/:g;
       $find = $orig_find unless $find;
       $files_group->{'find_files'}[$i] = $find;
-      my $test_string = 'abcdefg';
+      my $test_string      = 'abcdefg';
       local $SIG{__DIE__}  = 'DEFAULT';
-      local $SIG{__WARN__} = sub { die $_[0] };
+      local $SIG{__WARN__} = \&::die_when_called;
       eval { $test_string =~ /$find/ };
       die "$0: error: illegal regular expression in `find_files $orig_find' for `group $files_key' in `$config_filename':\n$@\n" if $@;
       $find_files{$find} = 1;
@@ -3276,7 +3321,7 @@
 
 # The following options go into the options and files hashes.  If you
 # add any elements to pcl_plot_append_elements, make sure up update
-# Orca::SourceDataFile::add_plots.
+# Orca::SourceFile::add_plots.
 my @pcl_option_elements;
 my @pcl_file_elements;
 my @pcl_plot_elements;
@@ -3323,11 +3368,11 @@
                                      legend
                                      line_type
                                      logarithmic
-                                     optional
                                      plot_height
                                      plot_min
                                      plot_max
                                      plot_width
+                                     required
                                      rigid_min_max
                                      source
                                      title
@@ -3342,7 +3387,7 @@
                                      state_file);
     @pcl_no_arg_elements        = qw(flush_regexps
                                      logarithmic
-                                     optional
+                                     required
                                      rigid_min_max);
    @pcl_keep_as_array_options   = qw();
    @pcl_keep_as_array_files     = qw(column_description
@@ -3577,8 +3622,8 @@
     based on when the file was last updated.
 
 Orca is similar to but substantially different from other tools that
-record and display hourly, daily, monthly, and yearly data, such as
-MRTG and Cricket.  To see these other tools, examine
+record and display hourly, daily, monthly, and yearly data, such as MRTG
+and Cricket.  To see these other tools, examine
 
   http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html
 
@@ -3590,10 +3635,10 @@
 
 A static example of Orca is at
 
-  http://www.geocities.com/~bzking/orca-example/
+  http://www.gps.caltech.edu/~blair/orca/orca-example/
 
-Please inform me of any other sites using Orca and I will include them
-here.
+Please inform me of any other sites using Orca and I will include
+them here.
 
 =head1 COMMAND LINE OPTIONS
 
@@ -3621,13 +3666,20 @@
 files can be found in the sample_configs directory with the distribution
 of this tool.
 
+=head1 RECOGNIZED SIGNALS
+
+Orca, when it received the HUP signal, will look for new source data files
+the next time it runs through the main loop.  If you have a constantly
+running Orca, this is a simpler and faster solution than restarting Orca,
+which takes time to reread all the source files.
+
 =head1 ARCHITECTURE ISSUES
 
 Because Orca is extremely IO intensive, I recommend that the host that
 locally mounts the RRD data files be the same machine that runs Orca.
-In addition, the HTML and image files that Orca creates also require a
-good amount of IO.  The machine running Orca should always have the
-B<rrd_dir> directory locally mounted.  It is more important this
+In addition, the HTML and image files that Orca creates also require
+a good amount of IO.  The machine running Orca should always have
+the B<rrd_dir> directory locally mounted.  It is more important this
 B<rrd_dir> be locally stored than B<html_dir> for performance concerns.
 The two options B<html_dir> and B<rrd_dir> are described in more detail
 below.
@@ -3650,13 +3702,15 @@
 
 =head2 Required General Options
 
+=over 4
+
 =item B<state_file> I<filename>
 
-For Orca to work efficiently, it saves the last modification time of
-all input data files and the Unix epoch time when they were last read
-by Orca into a state file.  The value for B<state_file> must be a
-valid, writable filename.  If I<filename> does not begin with a / and
-the B<base_dir> option was set, then the B<base_dir> directory will be
+For Orca to work efficiently, it saves the last modification time of all
+input data files and the Unix epoch time when they were last read by
+Orca into a state file.  The value for B<state_file> must be a valid,
+writable filename.  If I<filename> does not begin with a / and the
+B<base_dir> option was set, then the B<base_dir> directory will be
 prepended to the I<filename>.
 
 Each entry for a data input file is roughly 100 bytes, so for small sites,
@@ -3664,11 +3718,10 @@
 
 =item B<html_dir> I<directory>
 
-B<html_dir> specifies the root directory for the main index.html and
-all underlying HTML and PNG files that Orca generates.  This should
-not be a directory that normal users will edit.  Ideally this directory
-should be on a disk locally attached to the host running Orca, but is
-not necessary.
+B<html_dir> specifies the root directory for the main index.html and all
+underlying HTML and PNG files that Orca generates.  This should not be a
+directory that normal users will edit.  Ideally this directory should be
+on a disk locally attached to the host running Orca, but is not necessary.
 
 If I<directory> does not begin with a / and the B<base_dir> option was
 set, then the B<base_dir> directory will be prepended to I<directory>.
@@ -3696,13 +3749,17 @@
 B<html_dir>, B<rrd_dir>, and the B<find_files> option in the B<group>
 options.
 
+=back
+
 =head2 Optional General Options
 
+=over 4
+
 =item B<late_interval> I<Perl expression>
 
-B<late_interval> is used to calculate the time interval between a
-file's last modification time and the time when that file is considered
-to be late for an update.  In this case, an email message may be sent
+B<late_interval> is used to calculate the time interval between a file's
+last modification time and the time when that file is considered to
+be late for an update.  In this case, an email message may be sent
 out using the B<warn_email> addresses.  Because different input files
 may be updated at different rates, B<late_interval> takes an arbitrary
 Perl expression, including mathematical expressions, as its argument.
@@ -3733,9 +3790,9 @@
 =item B<expire_images> 1
 
 If B<expire_images> is set then .meta files will be created for all
-generated PNG files.  If the Apache web server 1.3.2 or greater is being
-used, then the following modifications must added to srm.conf or
-httpd.conf.
+generated PNG files.  If the Apache web server 1.3.2 or greater is
+being used, then the following modifications must added to srm.conf
+or httpd.conf.
 
   < 
   < #MetaDir .web
@@ -3764,9 +3821,8 @@
 
 =item B<html_top_title> I<text> ...
 
-The I<text> is placed at the top of the main index.html that Orca
-creates.  By default, no addition text is placed at the top of the
-main index.html.
+The I<text> is placed at the top of the main index.html that Orca creates.
+By default, no addition text is placed at the top of the main index.html.
 
 =item B<html_page_header> I<text> ...
 
@@ -3786,6 +3842,8 @@
 
   sub_dir 1
 
+=back
+
 =head2 Group Options
 
 The next step in configuring Orca is telling where to find the files to
@@ -3813,37 +3871,39 @@
 The key for a group, in this example GROUP_NAME1 and GROUP_NAME2, is a
 descriptive name that is unique for all files and is used later when the
 plots to create are defined.  Files that share the same general format
-of column data may be grouped together.  The options
-for a particular group must be enclosed in the curly brackets {}'s.
-An unlimited number of groups may be listed.
+of column data may be grouped together.  The options for a particular
+group must be enclosed in the curly brackets {}'s.  An unlimited number
+of groups may be listed.
 
 =head2 Required Group Options
 
+=over 4
+
 =item B<find_files> I<path|regexp> [I<path|regexp> ...]
 
-The B<find_files> option tells Orca what data files to use as
-its input.  The arguments to B<find_files> may be a simple filename,
-a complete path to a filename, or a regular expression to find files.
-The regular expression match is not the normal shell globbing that the
-Bourne shell, C shell or other shells use.  Rather, Orca uses the Perl
-regular expressions to find files.  For example:
+The B<find_files> option tells Orca what data files to use as its input.
+The arguments to B<find_files> may be a simple filename, a complete
+path to a filename, or a regular expression to find files.  The regular
+expression match is not the normal shell globbing that the Bourne shell, C
+shell or other shells use.  Rather, Orca uses the Perl regular expressions
+to find files.  For example:
 
   find_files /data/source1 /data/source2
 
-will have Orca use /data/source1 and /data/source2 as the inputs
-to Orca.  This could have also been written as
+will have Orca use /data/source1 and /data/source2 as the inputs to Orca.
+This could have also been written as
 
   find_files /data/source\d
 
 and both data files will be used.
 
 In the two above examples, Orca will assume that both data files
-represent data from the same source.  If this is not the case, such as
-source1 is data from one place and source2 is data from another place,
-then Orca needs to be told to treat the data from each file as distinct
-data sources.  This be accomplished in two ways.  The first is by creating
-another group { ... } set.  However, this requires copying all
-of the text and makes maintenance of the configuration file complex.
+represent data from the same source.  If this is not the case, such
+as source1 is data from one place and source2 is data from another
+place, then Orca needs to be told to treat the data from each file as
+distinct data sources.  This be accomplished in two ways.  The first is
+by creating another group { ... } set.  However, this requires copying
+all of the text and makes maintenance of the configuration file complex.
 The second and recommend approach is to place ()'s around parts of the
 regular expression to tell Orca how to distinguish the two data files:
 
@@ -3852,13 +3912,13 @@
 This creates two groups, one named source1 and the other named source2
 which will be plotted separately.  One more example:
 
-  find_files /data/solaris.*/(.*)/percol-\d{4}-\d{2}-\d{2}
+  find_files /data/solaris.*/(.*)/percol-\d{4}-\d{2}-\d{2}(?:\.(?:Z|gz|bz2))?
 
 will use files of the form
 
   /data/solaris-2.6/olympia/percol-1998-12-01
-  /data/solaris-2.6/olympia/percol-1998-12-02
-  /data/solaris-2.5.1/sunridge/percol-1998-12-01
+  /data/solaris-2.6/olympia/percol-1998-12-02.Z
+  /data/solaris-2.5.1/sunridge/percol-1998-12-01.gz
   /data/solaris-2.5.1/sunridge/percol-1998-12-02
 
 and treat the files in the olympia and sunridge directories as distinct,
@@ -3880,8 +3940,8 @@
 For Orca to plot the data, it needs to be told what each column of
 data holds.  This is accomplished by creating a text description for
 each column.  There are two ways this may be loaded into Orca.  If the
-input data files for a group do not change, then the column names
-can be listed after B<column_description>:
+input data files for a group do not change, then the column names can
+be listed after B<column_description>:
 
   column_description date in_packets/s out_packets/s
 
@@ -3890,12 +3950,11 @@
 
   column_description first_line
 
-This informs Orca that it should read the first line of all the input
-data files for the column description.  Orca can handle different files
-in the same group that have different number of columns and column
-descriptions.  The only limitation here is that column descriptions
-are white space separated and therefore, no spaces are allowed in the
-column descriptions.
+This informs Orca that it should read the first line of all the input data
+files for the column description.  Orca can handle different files in the
+same group that have different number of columns and column descriptions.
+The only limitation here is that column descriptions are white space
+separated and therefore, no spaces are allowed in the column descriptions.
 
 =item B<date_source> column_name I<column_name>
 
@@ -3913,14 +3972,19 @@
 The B<date_format> option is only required if the column_name argument
 to B<date_source> is used.  Current, this argument is not used by Orca.
 
+=back
+
 =head2 Optional Files Options
 
+=over 4
+
 =item B<reopen> 1
 
-Using the B<reopen> option for a group instructs Orca to close
-and reopen any input data files when there is new data to be read.
-This is of most use when an input data file is erased and rewritten by
-some other process.
+Using the B<reopen> option for a group instructs Orca to close and reopen
+any input data files when there is new data to be read.  This is of most
+use when an input data file is erased and rewritten by some other process.
+
+=back
 
 =head2 Plot Options
 
@@ -3958,11 +4022,13 @@
 
 =head2 Required Plot Options
 
+=over 4
+
 =item B<source> I<group_name>
 
-The B<source> argument should be a single group name from which data will
-be plotted.  Currently, only data from a single group may be put into a
-single plot.
+The B<source> argument should be a single group name from which data
+will be plotted.  Currently, only data from a single group may be put
+into a single plot.
 
 =item B<data> I<Perl expression>
 
@@ -3972,14 +4038,14 @@
 in a single PNG plot.  At least one B<data> option is required for a
 particular plot and as many as needed may be placed into a single plot.
 
-Two forms of arguments to B<data> are allowed.    The first form
-allows arbitrary Perl expressions, including mathematical expressions,
-that result in a number as a data source to plot.  The expression may
-contain the names of the columns as found in the group given to the
-B<source> option.  The column names must be separated with white space
-from any other characters in the expression.  For example, if you have
-number of bytes per second input and output and you want to plot the
-total number of bits per second, you could do this:
+Two forms of arguments to B<data> are allowed.  The first form allows
+arbitrary Perl expressions, including mathematical expressions, that
+result in a number as a data source to plot.  The expression may contain
+the names of the columns as found in the group given to the B<source>
+option.  The column names must be separated with white space from any
+other characters in the expression.  For example, if you have number of
+bytes per second input and output and you want to plot the total number
+of bits per second, you could do this:
 
   plot {
   source	bytes_per_second
@@ -4041,12 +4107,12 @@
 then separate plots will be created for olympia and sunridge, with each
 plot containing the input and output number of packets per second.
 
-By default, when Orca finds a plot set with a regular expression
-match, it will only find one match, and then go on to the next plot set.
-After it reaches the last plot set, it will go back to the first plot set
-with a regular expression match and look for the next data that matches
-the regular expression.  The net result of this is that the generated
-HTML files using the above configuration will have links in this order:
+By default, when Orca finds a plot set with a regular expression match, it
+will only find one match, and then go on to the next plot set.  After it
+reaches the last plot set, it will go back to the first plot set with
+a regular expression match and look for the next data that matches the
+regular expression.  The net result of this is that the generated HTML
+files using the above configuration will have links in this order:
 
   hme0 Input & Output Packets per Second
   hme0 Input & Output Kilobytes per Second
@@ -4056,10 +4122,10 @@
   hme1 Input & Output Errors per Second
 
 If you wanted to have the links listed in order of hme0 and hme1,
-then you would add the B<flush_regexps> option to tell Orca to find
-all regular expression matches for a particular plot set and all plot
-sets before the plot set containing B<flush_regexps> before continuing
-on to the next plot set.  For example, if
+then you would add the B<flush_regexps> option to tell Orca to find all
+regular expression matches for a particular plot set and all plot sets
+before the plot set containing B<flush_regexps> before continuing on to
+the next plot set.  For example, if
 
   flush_regexps 1
 
@@ -4083,6 +4149,8 @@
   hme0 Input & Output Errors per Second
   hme1 Input & Output Errors per Second
 
+=back
+
 =head2 Data Source Optional Plot Options
 
 The following options are plot optional.  Like the B<data> option,
@@ -4090,6 +4158,8 @@
 particular type sets the option for the first B<data> option, the second
 option refers to the second B<data> option, etc.
 
+=over 4
+
 =item B<data_type> I<type>
 
 When defining data types, Orca uses the same data types as provided
@@ -4100,8 +4170,8 @@
 incrementing counters like the InOctets counter in a router. The
 B<COUNTER> data source assumes that the counter never decreases, except
 when a counter overflows.  The update function takes the overflow into
-account.  B<DERIVE> will store the derivative of the line going from
-the last to the current value of the data source. This can be useful for
+account.  B<DERIVE> will store the derivative of the line going from the
+last to the current value of the data source. This can be useful for
 counters which do raise and fall, for example, to measure the rate of
 people entering or leaving a room.  B<DERIVE> does not test for overflow.
 B<ABSOLUTE> is for counters which get reset upon reading.
@@ -4143,19 +4213,25 @@
 the columns with their regular expressions.  See the above description
 of using regular expressions in the B<data> option for an example.
 
-=item B<optional> 1
+=item B<required> 1
 
 Because some of the input data files may not contain the column names
 that are listed in a particular plot, Orca provides two ways to handle
-missing data.  By default, Orca will generate a plot with I<*UNKNOWN*>
-data if the data is mission.  If you want Orca to not generate a plot
-if the data does not exist, then place
+missing data.  By default, Orca will ignore data that does not exist
+or if a data item cannot be eval'ed or returns invalid data.  In this
+case, the plot may never be created.  However, if a plot is required,
+then set the required flag for a plot by placing
 
-  optional 1
+  required 1
 
-in the options for a particular plot.
+in the options for a particular plot.  In this case, Orca will record
+a I<*UNKNOWN*> value for all invalid data.
 
-=head2 PNG Plot Plotting Options
+=back
+
+=head2 Plotting Options
+
+=over 4
 
 =item B<base> I<number>
 
@@ -4198,18 +4274,22 @@
 
 =item B<title> <text>
 
-Setting the B<title> option sets the title of the plot.  If you place
-%g or %G in the title, it is replaced with the text matched by any
-()'s in the group B<find_files> option.  %g gets replaced with the
-exact text matched by the ()'s and %G is replaced with the same text,
-except the first character is capitalized.
+Setting the B<title> option sets the title of the plot.  If you place %g
+or %G in the title, it is replaced with the text matched by any ()'s in
+the group B<find_files> option.  %g gets replaced with the exact text
+matched by the ()'s and %G is replaced with the same text, except the
+first character is capitalized.
 
 =item B<y_legend> <text>
 
 Setting B<y_legend> sets the text to be displayed along the Y axis of
 the PNG plot.
 
-=head2 Multiple PNG Plot Ploting Options
+=back
+
+=head2 Multiple Plot Plotting Options
+
+=over 4
 
 The following options should be specified multiple times for each data
 source in the plot.
@@ -4229,12 +4309,7 @@
 The B<legend> option specifies for a single data source the comment that
 is placed below the PNG plot.
 
-=head1 MAILING LISTS
-
-Discussions regarding Orca take place on the mrtg-developers mailing
-list located at mrtg-developers at list.ee.ethz.ch.  To place yourself
-on the mailing list, send a message with the word subscribe to it
-to mrtg-developers-request at list.ee.ethz.ch.
+=back
 
 =head1 IMPLEMENTATION NOTES
 
@@ -4249,10 +4324,62 @@
 resulting binary code is used as a key in a hash with the value being the
 anonymous subroutine array.  This saves in memory and in processing time.
 
+=head1 MAILING LISTS
+
+Four mailing lists exist for Orca.  To subscribe to any of the mailing
+lists, please visit the URL below.  You have the option of choosing a
+digest form of the mailing list if you wish it when you subscribe to
+the mailing list or anytime thereafter.  To send email to any of these
+lists you must subscribe to the list.
+
+B<orca-announce>
+
+  Subscribe http://www.onelist.com/subscribe/orca-announce
+  Archive   http://www.onelist.com/archive/orca-announce
+
+The orca-announce at onelist.com mailing list is a LOW volume moderated
+mailing list for announcing stable releases of Orca.
+
+B<orca-help at onelist.com>
+
+  Subscribe http://www.onelist.com/subscribe/orca-help
+  Archive   http://www.onelist.com/archive/orca-help
+
+The orca-help at onelist.com is a first stop mailing list for getting help in
+setting up and getting Orca running.  Problems relating to downloading,
+configuring, compiling the necessary Perl modules, and installing
+Orca belong here.  People interested anything more than this, such as
+developing data gathering modules or active Perl development, should be on
+one or both of the orca-discuss at onelist.com or orca-developers at onelist.com
+mailing lists.  Once you get Orca running to your satisfaction, you may
+want to remove yourself from this list.
+
+B<orca-discuss at onelist.com>
+
+  Subscribe http://www.onelist.com/subscribe/orca-discuss
+  Archive   http://www.onelist.com/archive/orca-discuss
+
+The orca-discuss at onelist.com mailing list is for active users of Orca
+who are doing new interesting things with Orca and want to discuss Orca
+but are not interested in actively developing Orca source code.  These
+people are also not interested in helping people get Orca running on their
+systems.
+
+B<orca-developers at onelist.com>
+
+  Subscribe http://www.onelist.com/subscribe/orca-developers
+  Archive   http://www.onelist.com/archive/orca-developers
+
+The orca-developers at onelist.com mailing list is for hackers of Orca who
+actually hack and improve Orca.
+
 =head1 AUTHOR, COMMENTS, AND BUGS
 
-I welcome all comments and bug reports.  Please email them to Blair
-Zajac <blair at geostaff.com>.
+Please direct all Orca comments and bugs to one of the above mailing
+lists.
+
+If you wish to contact the author or Orca, Blair Zajac, directly, please
+email me to blair at akamai.com.
 
 =cut
 

Modified: trunk/orca/docs/manual.html
==============================================================================
--- trunk/orca/docs/manual.html	(original)
+++ trunk/orca/docs/manual.html	Sat Jul 13 21:00:24 2002
@@ -54,7 +54,7 @@
           Pages Locked & IO
 
 -----Original Message-----
-From: Blair Zajac [mailto:bzajac at geostaff.com]
+From: Blair Zajac [mailto:bzajac at akamai.com]
 Sent: Wednesday, June 09, 1999 10:45 AM
 To: Company, Paul
 Subject: Re: Orca observations

Modified: trunk/orca/docs/Makefile.in
==============================================================================
--- trunk/orca/docs/Makefile.in	(original)
+++ trunk/orca/docs/Makefile.in	Sat Jul 13 21:00:24 2002
@@ -2,11 +2,11 @@
 mandir	= @mandir@/man1
 MKDIR	= @MKDIR@
 INSTALL	= @INSTALL@
-ORCA	= ../src/orca.pl
+ORCA	= ../src/orca.pl.in
 
 TARGETS	= orca.man orca.html orca.txt
 
-all:	$(TARGETS)
+all:	Makefile $(TARGETS)
 
 orca.man: $(ORCA)
 	pod2man $< > $@
@@ -21,6 +21,10 @@
 	$(MKDIR) $(mandir)
 	$(INSTALL) -m 0644 orca.man $(mandir)/orca.1
 
+Makefile: Makefile.in
+	cd .. && CONFIG_FILES=docs/Makefile ./config.status
+	$(MAKE)
+
 clean:
 	$(RM) $(TARGETS) pod2html-*
 

Modified: trunk/orca/CHANGES
==============================================================================
--- trunk/orca/CHANGES	(original)
+++ trunk/orca/CHANGES	Sat Jul 13 21:00:24 2002
@@ -1,3 +1,76 @@
+Wed Oct 20 18:19:15 PDT 1999
+
+	Release Orca 0.25.
+
+Wed Oct 20 17:37:01 PDT 1999
+
+	Fix that annoying warning from pod2html when orca.html is
+	generated.
+
+	Include Storable 0.607 but continue to only require 0.603.
+
+	Add a mention in the POD that sending a HUP to the Orca process
+	forces it to look for new files in the next loop.  This is faster
+	than restarting Orca.
+
+	Change the behavior of warnings when data requested to be plotted
+	in the configuration file does not exist in the source data files.
+	Any resulting errors from this, such as cannot compile errors,
+	are only sent when the verbose level is above 1 or when the plot
+	is required.
+
+	Did some renaming of classes and variables in limited places:
+	Orca::SourceDataFile -> Orca::SourceFile
+	files_key            -> group
+	group                -> subgroup
+	gif                  -> image
+
+	Orcallator.se 1.20 now mentions my new email address of
+	blair at akamai.com instead of the old one.
+
+	Move all references to my and Orca's home page from GeoCities
+	(www.geocities.com/~bzking/) to Caltech
+	(www.gps.caltech.edu/~blair/orca/) everywhere.
+
+	In the default orcallator.cfg, make sure it can find compressed
+	orcallator files in the find_files statement.
+
+	Make sure all Makefile's can rebuild themselves from their
+	Makefile.in and make sure that the Makefile target is built when
+	all is built.
+
+	Put in an optimization where Orca would not repeatedly create
+	a new anonymous subroutine to catch warnings when eval's were
+	being performed.
+
+	Add a new make target, orcallator_run_at_boot, which installs
+	into the proper /etc/*.d/ directories the scripts to start
+	orcallator at boot time and stop orcallator at halt time.
+	Update the INSTALL file to mention this.
+
+	Fix an important bug where Orca would crash if column names
+	mentioned in the configuration file did not exist in the source
+	data files.  This fix was in Orca::SourceFile::add_plots.
+
+Tue Oct 19 18:25:12 PDT 1999
+
+	Make all plots optional by default.  Remove the optional plot
+	keyword and add required, which makes a plot required.
+
+Fri Oct 15 11:25:53 PDT 1999
+
+	Add a new plot in the default orcallator.cfg, the amount of free
+	physical memory.
+
+	Shorten the legend names in orcallator.cfg so that the complete
+	line fits in the generated image.  Also make the Y legend names
+	more consistent with each other.
+
+Thu Oct 14 15:52:43 PDT 1999
+
+	Create a orcallator/S99orcallator file that can be used to start
+	orcallator.se at boot time and stop it at halt time.
+
 Thu Oct 14 14:44:00 PDT 1999
 
 	Release Orca 0.24.
@@ -111,7 +184,7 @@
 
 Mon Sep 20 11:18:21 PDT 1999
 
-	Include Storable 0.6.5.
+	Include Storable 0.605 but continue to only require 0.603.
 
 Tue Sep 14 15:54:38 PDT 1999
 

Modified: trunk/orca/NEWS
==============================================================================
--- trunk/orca/NEWS	(original)
+++ trunk/orca/NEWS	Sat Jul 13 21:00:24 2002
@@ -1,3 +1,30 @@
+New in Orca version 0.25.
+ 1) I have moved companies from Yahoo!/GeoCities to Akamai.  My email
+    address has changed to blair at akamai.com and the old one will
+    no longer work.  Also, I have moved the my entire Orca archive
+    from www.geocities.com/~bzking/ to www.gps.caltech.edu/~blair/orca/
+ 2) Fix an important bug where Orca would crash if column names mentioned
+    in the configuration file did not exist in the source data files.
+ 3) Orca, when it received the HUP signal, will look for new source
+    data files the next time it runs through the main loop.  If you have
+    a constantly running Orca, this is a simpler and faster solution
+    than restarting Orca, which takes time to reread all the source files.
+ 4) Add a new make target orcallator_run_at_boot which will install the
+    proper files into the proper /etc/*.d/ directories to start orcallator
+    at boot time and shut it down at halt time.
+ 5) The previous default orcallator.cfg would not find compressed
+    orcallator files.
+ 6) Remove the plot configuration option `optional' which made plots
+    optional.  Now make plots optional by default and use the keyword
+    `required' to make them required.  If a plot is required, then it
+    will always display, even if there is no data loaded for it.
+ 7) Change the behavior of warnings when data requested to be plotted
+    in the configuration file does not exist in the source data files.
+    Any resulting errors from this, such as cannot compile errors,
+    are only sent when the verbose level is above 1 or when the plot
+    is required.
+ 8) Include Storable 0.6.7 but continue to only require Storable 0.6.3.
+
 New in Orca version 0.24.
  1) Installation notes.  Due to the way Orca generated image and HTML
     files are named, read the INSTALL file.  Otherwise, you will have

Modified: trunk/orca/README
==============================================================================
--- trunk/orca/README	(original)
+++ trunk/orca/README	Sat Jul 13 21:00:25 2002
@@ -22,11 +22,11 @@
 
 An example of the output generated by Orca is located at:
 
-    http://www.geocities.com/~bzking/orca-example/
+    http://www.gps.caltech.edu/~blair/orca/orca-example/
 
-Orca is written completely in Perl.  To install, configure and use
-Orca, read the INSTALL file.  Some sample configuration files for
-Orca can be found in the lib directory.
+Orca is written completely in Perl.  To install, configure and use Orca,
+read the INSTALL file.  Some sample configuration files for Orca can be
+found in the lib directory.
 
 For an overview of the design decisions that made Orca what it is today,
 read the article
@@ -36,11 +36,9 @@
 Orca is based on the RRDtool written by Tobias Oetiker.  To really
 understand Orca and how it saves and manages your data, you should
 understand RRDtool, which serves as the backend binary data filestore.
-I recommend reading the
-documentation that comes with RRDtool.  It will
-explain how the data files Orca uses are created, maintained, and
-used to create the images that Orca creates.  Read about RRDtool
-at
+I recommend reading the documentation that comes with RRDtool.  It will
+explain how the data files Orca uses are created, maintained, and used
+to create the images that Orca creates.  Read about RRDtool at
 
     http://ee-staff.ethz.ch/~oetiker/webtools/rrdtool/
 
@@ -54,37 +52,38 @@
     orcallator.se
     ==============
 
-    The other tool in this package is an updated version of orcallator.se
-    written by Adrian Cockcroft.  Percollator.se is a tool written for Solaris
-    SPARC and Solaris x86 that collects a large amount of system and web
-    server statistics and prints them into a file for later processing
-    and plotting.  For documentation on the original orcallator.se tool,
-    see the URL http://www.sunworld.com/swol-03-1996/swol-03-perf.html
-
-    This version of orcallator.se collects much more data than the original
-    on Solaris systems.  I have designed an Orca configuration file designed
-    to read the output of this orcallator.  Sample output from this set up
-    is displayed at
+    The other tool in this package is an updated version of
+    orcallator.se written by Adrian Cockcroft.  Percollator.se
+    is a tool written for Solaris SPARC and Solaris x86 that
+    collects a large amount of system and web server statistics
+    and prints them into a file for later processing and plotting.
+    For documentation on the original orcallator.se tool, see the URL
+    http://www.sunworld.com/swol-03-1996/swol-03-perf.html
+
+    This version of orcallator.se collects much more data than the
+    original on Solaris systems.  I have designed an Orca configuration
+    file designed to read the output of this orcallator.  Sample output
+    from this set up is displayed at
 
-    http://www.geocities.com/~bzking/orca-example/
+    http://www.gps.caltech.edu/~blair/orca/orca-example/
 
     Documentation on the data that orcallator.se collects can be viewed at
 
-    http://www.geocities.com/~bzking/docs/orcallator.html
+    http://www.gps.caltech.edu/~blair/orca/docs/orcallator.html
 
 DOWNLOAD AT
 ============
 
 These tools are available for download from
 
-http://www.geocities.com/~bzking/
+http://www.gps.caltech.edu/~blair/orca/
 
 MAILING LISTS
 =============
 
 Four mailing lists exist for Orca.  To subscribe to any of the mailing
-lists, please visit the URL listed below.  You have the option of choosing a
-digest form of the mailing list if you wish it when you subscribe to
+lists, please visit the URL listed below.  You have the option of choosing
+a digest form of the mailing list if you wish it when you subscribe to
 the mailing list or anytime thereafter.  To send email to any of these
 lists you must subscribe to the list.
 
@@ -99,14 +98,14 @@
     Subscribe    http://www.onelist.com/subscribe/orca-help
     Archive      http://www.onelist.com/archive/orca-help
 
-    This mailing list is a first stop mailing list for getting help in
-    setting up and getting Orca running.  Problems relating to downloading,
-    configuring, compiling the necessary Perl modules, and installing Orca
-    belong here.  People interested anything more than this, such as
-    developing data gathering modules or active Perl development, should be
-    on one or both of the following mailing lists.  Once you get Orca
-    running to your satisfaction, you may want to remove yourself from this
-    list.
+    This mailing list is a first stop mailing list for getting help
+    in setting up and getting Orca running.  Problems relating to
+    downloading, configuring, compiling the necessary Perl modules,
+    and installing Orca belong here.  People interested anything more
+    than this, such as developing data gathering modules or active Perl
+    development, should be on one or both of the following mailing lists.
+    Once you get Orca running to your satisfaction, you may want to
+    remove yourself from this list.
 
 orca-discuss at onelist.com
     Subscribe    http://www.onelist.com/subscribe/orca-discuss
@@ -114,16 +113,17 @@
 
     This mailing list is for active users of Orca who are doing new
     interesting things with Orca and want to discuss Orca but are not
-    interested in actively developing Orca source code.  These people are
-    also not interested in helping people get Orca running on their systems.
+    interested in actively developing Orca source code.  These people
+    are also not interested in helping people get Orca running on their
+    systems.
 
 orca-developers at onelist.com
     Subscribe    http://www.onelist.com/subscribe/orca-developers
     Archive      http://www.onelist.com/archive/orca-developers
 
-    This mailing list is for people who are interested in actively developing,
-    fixing and improving Orca's source code and related data gathering
-    modules, and porting Orca to new platforms.
+    This mailing list is for people who are interested in actively
+    developing, fixing and improving Orca's source code and related data
+    gathering modules, and porting Orca to new platforms.
 
 INSTALLATION
 ============
@@ -138,8 +138,7 @@
 correspondence to orca-users at onelist.com or orca-developers at onelist.com,
 which I read and participate on.
 
-If you wish to contact me directly, my email address is
-bzajac at geostaff.com.
+If you wish to contact me directly, my email address is bzajac at akamai.com.
 
 NAMING OF ORCA
 ==============

Modified: trunk/orca/packages/Storable-0.6.7/t/dump.pl
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/t/dump.pl	(original)
+++ trunk/orca/packages/Storable-0.6.7/t/dump.pl	Sat Jul 13 21:00:25 2002
@@ -1,4 +1,4 @@
-;# $Id: dump.pl,v 0.6 1998/06/04 16:08:27 ram Exp ram $
+;# $Id: dump.pl,v 0.6 1998/06/04 16:08:27 ram Exp $
 ;#
 ;#  Copyright (c) 1995-1998, Raphael Manfredi
 ;#  
@@ -6,7 +6,7 @@
 ;#  as specified in the README file that comes with the distribution.
 ;#
 ;# $Log: dump.pl,v $
-;# Revision 0.6  1998/06/04  16:08:27  ram
+;# Revision 0.6  1998/06/04 16:08:27  ram
 ;# Baseline for first beta release.
 ;#
 

Modified: trunk/orca/packages/Storable-0.6.7/t/freeze.t
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/t/freeze.t	(original)
+++ trunk/orca/packages/Storable-0.6.7/t/freeze.t	Sat Jul 13 21:00:25 2002
@@ -1,6 +1,6 @@
 #!./perl
 
-# $Id: freeze.t,v 0.6.1.1 1998/06/12 09:47:08 ram Exp ram $
+# $Id: freeze.t,v 0.6.1.1 1998/06/12 09:47:08 ram Exp $
 #
 #  Copyright (c) 1995-1998, Raphael Manfredi
 #  
@@ -8,7 +8,7 @@
 #  as specified in the README file that comes with the distribution.
 #
 # $Log: freeze.t,v $
-# Revision 0.6.1.1  1998/06/12  09:47:08  ram
+# Revision 0.6.1.1  1998/06/12 09:47:08  ram
 # patch1: added test for the LVALUE bug workaround
 #
 # Revision 0.6  1998/06/04  16:08:31  ram

Modified: trunk/orca/packages/Storable-0.6.7/t/forgive.t
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/t/forgive.t	(original)
+++ trunk/orca/packages/Storable-0.6.7/t/forgive.t	Sat Jul 13 21:00:25 2002
@@ -1,6 +1,6 @@
 #!./perl
 
-# $Id: forgive.t,v 0.6 1998/06/04 16:08:38 ram Exp ram $
+# $Id: forgive.t,v 0.6 1998/06/04 16:08:38 ram Exp $
 #
 #  Copyright (c) 1995-1998, Raphael Manfredi
 #  
@@ -11,7 +11,7 @@
 # (C) Copyright 1997, Universitat Dortmund, all rights reserved.
 #
 # $Log: forgive.t,v $
-# Revision 0.6  1998/06/04  16:08:38  ram
+# Revision 0.6  1998/06/04 16:08:38  ram
 # Baseline for first beta release.
 #
 

Modified: trunk/orca/packages/Storable-0.6.7/t/dclone.t
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/t/dclone.t	(original)
+++ trunk/orca/packages/Storable-0.6.7/t/dclone.t	Sat Jul 13 21:00:25 2002
@@ -1,6 +1,6 @@
 #!./perl
 
-# $Id: dclone.t,v 0.6 1998/06/04 16:08:25 ram Exp ram $
+# $Id: dclone.t,v 0.6 1998/06/04 16:08:25 ram Exp $
 #
 #  Copyright (c) 1995-1998, Raphael Manfredi
 #  
@@ -8,7 +8,7 @@
 #  as specified in the README file that comes with the distribution.
 #
 # $Log: dclone.t,v $
-# Revision 0.6  1998/06/04  16:08:25  ram
+# Revision 0.6  1998/06/04 16:08:25  ram
 # Baseline for first beta release.
 #
 

Modified: trunk/orca/packages/Storable-0.6.7/t/retrieve.t
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/t/retrieve.t	(original)
+++ trunk/orca/packages/Storable-0.6.7/t/retrieve.t	Sat Jul 13 21:00:25 2002
@@ -1,6 +1,6 @@
 #!./perl
 
-# $Id: retrieve.t,v 0.6 1998/06/04 16:08:33 ram Exp ram $
+# $Id: retrieve.t,v 0.6 1998/06/04 16:08:33 ram Exp $
 #
 #  Copyright (c) 1995-1998, Raphael Manfredi
 #  
@@ -8,7 +8,7 @@
 #  as specified in the README file that comes with the distribution.
 #
 # $Log: retrieve.t,v $
-# Revision 0.6  1998/06/04  16:08:33  ram
+# Revision 0.6  1998/06/04 16:08:33  ram
 # Baseline for first beta release.
 #
 

Modified: trunk/orca/packages/Storable-0.6.7/t/tied.t
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/t/tied.t	(original)
+++ trunk/orca/packages/Storable-0.6.7/t/tied.t	Sat Jul 13 21:00:25 2002
@@ -1,6 +1,6 @@
 #!./perl
 
-# $Id: tied.t,v 0.6 1998/06/04 16:08:40 ram Exp ram $
+# $Id: tied.t,v 0.6 1998/06/04 16:08:40 ram Exp $
 #
 #  Copyright (c) 1995-1998, Raphael Manfredi
 #  
@@ -8,7 +8,7 @@
 #  as specified in the README file that comes with the distribution.
 #
 # $Log: tied.t,v $
-# Revision 0.6  1998/06/04  16:08:40  ram
+# Revision 0.6  1998/06/04 16:08:40  ram
 # Baseline for first beta release.
 #
 

Modified: trunk/orca/packages/Storable-0.6.7/t/canonical.t
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/t/canonical.t	(original)
+++ trunk/orca/packages/Storable-0.6.7/t/canonical.t	Sat Jul 13 21:00:25 2002
@@ -1,6 +1,6 @@
 #!./perl
 
-# $Id: canonical.t,v 0.6 1998/06/04 16:08:24 ram Exp ram $
+# $Id: canonical.t,v 0.6 1998/06/04 16:08:24 ram Exp $
 #
 #  Copyright (c) 1995-1998, Raphael Manfredi
 #  
@@ -8,7 +8,7 @@
 #  as specified in the README file that comes with the distribution.
 #  
 # $Log: canonical.t,v $
-# Revision 0.6  1998/06/04  16:08:24  ram
+# Revision 0.6  1998/06/04 16:08:24  ram
 # Baseline for first beta release.
 #
 

Modified: trunk/orca/packages/Storable-0.6.7/t/store.t
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/t/store.t	(original)
+++ trunk/orca/packages/Storable-0.6.7/t/store.t	Sat Jul 13 21:00:25 2002
@@ -1,6 +1,6 @@
 #!./perl
 
-# $Id: store.t,v 0.6 1998/06/04 16:08:35 ram Exp ram $
+# $Id: store.t,v 0.6 1998/06/04 16:08:35 ram Exp $
 #
 #  Copyright (c) 1995-1998, Raphael Manfredi
 #  
@@ -8,7 +8,7 @@
 #  as specified in the README file that comes with the distribution.
 #
 # $Log: store.t,v $
-# Revision 0.6  1998/06/04  16:08:35  ram
+# Revision 0.6  1998/06/04 16:08:35  ram
 # Baseline for first beta release.
 #
 

Modified: trunk/orca/packages/Storable-0.6.7/Storable.xs
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/Storable.xs	(original)
+++ trunk/orca/packages/Storable-0.6.7/Storable.xs	Sat Jul 13 21:00:26 2002
@@ -3,7 +3,7 @@
  */
 
 /*
- * $Id: Storable.xs,v 0.6.1.5 1999/09/14 20:12:29 ram Exp ram $
+ * $Id: Storable.xs,v 0.6.1.6 1999/10/19 19:23:34 ram Exp $
  *
  *  Copyright (c) 1995-1998, Raphael Manfredi
  *  
@@ -11,6 +11,10 @@
  *  as specified in the README file that comes with the distribution.
  *
  * $Log: Storable.xs,v $
+ * Revision 0.6.1.6  1999/10/19 19:23:34  ram
+ * patch6: Fixed typo in macro that made threaded code not compilable
+ * patch6: Changed detection of older perls (pre-5.005) by testing PATCHLEVEL
+ *
  * Revision 0.6.1.5  1999/09/14 20:12:29  ram
  * patch5: integrated "thread-safe" patch from Murray Nesbitt
  * patch5: try to avoid compilation warning on 64-bit CPUs
@@ -63,7 +67,7 @@
 #ifndef newRV_noinc
 #define newRV_noinc(sv)		((Sv = newRV(sv)), --SvREFCNT(SvRV(Sv)), Sv)
 #endif
-#ifndef ERRSV				/* Detects older perls (<= 5.004) */
+#if (PATCHLEVEL <= 4)		/* Older perls (<= 5.004) lack PL_ namespace */
 #define PL_sv_yes	sv_yes
 #define PL_sv_no	sv_no
 #define PL_sv_undef	sv_undef
@@ -199,9 +203,9 @@
 
 #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || defined(PERL_CAPI)
 
-#if (PATCHLEVEL == 4) && (SUBVERSION < 68)
+#if (PATCHLEVEL <= 4) && (SUBVERSION < 68)
 #define dPERINTERP_SV 									\
-	SV *perinterp_sv = perl_get_sv(MY_VERSION, FALSE)	\
+	SV *perinterp_sv = perl_get_sv(MY_VERSION, FALSE)
 #else	/* >= perl5.004_68 */
 #define dPERINTERP_SV									\
 	SV *perinterp_sv = *hv_fetch(PL_modglobal,			\

Modified: trunk/orca/packages/Storable-0.6.7/Storable.pm
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/Storable.pm	(original)
+++ trunk/orca/packages/Storable-0.6.7/Storable.pm	Sat Jul 13 21:00:27 2002
@@ -1,4 +1,4 @@
-;# $Id: Storable.pm,v 0.6.1.5 1999/09/14 20:11:22 ram Exp ram $
+;# $Id: Storable.pm,v 0.6.1.7 1999/10/20 17:07:31 ram Exp $
 ;#
 ;#  Copyright (c) 1995-1998, Raphael Manfredi
 ;#  
@@ -6,6 +6,12 @@
 ;#  as specified in the README file that comes with the distribution.
 ;#
 ;# $Log: Storable.pm,v $
+;# Revision 0.6.1.7  1999/10/20 17:07:31  ram
+;# patch7: forgot to update VERSION
+;#
+;# Revision 0.6.1.6  1999/10/19 19:21:27  ram
+;# patch6: Added mention of japanese translation
+;#
 ;# Revision 0.6.1.5  1999/09/14 20:11:22  ram
 ;# patch5: updated version number
 ;#
@@ -42,7 +48,7 @@
 use Carp;
 use vars qw($forgive_me $VERSION);
 
-$VERSION = '0.605';
+$VERSION = '0.607';
 *AUTOLOAD = \&AutoLoader::AUTOLOAD;		# Grrr...
 
 bootstrap Storable;
@@ -417,6 +423,7 @@
 	Andrew Ford <A.Ford at ford-mason.co.uk>
 	Gisle Aas <gisle at aas.no>
 	Jeff Gresham <gresham_jeffrey at jpmorgan.com>
+	Murray Nesbitt <murray at activestate.com>
 
 for their bug reports, suggestions and contributions.
 
@@ -427,6 +434,13 @@
 simply counting the objects instead of tagging them (leading to
 a binary incompatibility for the Storable image starting at version
 0.6--older images are of course still properly understood).
+Murray Nesbitt made Storable thread-safe.
+
+=head1 TRANSLATIONS
+
+There is a Japanese translation of this man page available at
+http://member.nifty.ne.jp/hippo2000/perltips/storable.htm ,
+courtesy of Kawai, Takanori <kawai at nippon-rad.co.jp>.
 
 =head1 AUTHOR
 

Modified: trunk/orca/packages/Storable-0.6.7/Makefile.PL
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/Makefile.PL	(original)
+++ trunk/orca/packages/Storable-0.6.7/Makefile.PL	Sat Jul 13 21:00:27 2002
@@ -1,4 +1,4 @@
-# $Id: Makefile.PL,v 0.6 1998/06/04 16:08:18 ram Exp ram $
+# $Id: Makefile.PL,v 0.6 1998/06/04 16:08:18 ram Exp $
 #
 #  Copyright (c) 1995-1998, Raphael Manfredi
 #  
@@ -6,7 +6,7 @@
 #  as specified in the README file that comes with the distribution.
 #
 # $Log: Makefile.PL,v $
-# Revision 0.6  1998/06/04  16:08:18  ram
+# Revision 0.6  1998/06/04 16:08:18  ram
 # Baseline for first beta release.
 #
 

Modified: trunk/orca/packages/Storable-0.6.7/ChangeLog
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/ChangeLog	(original)
+++ trunk/orca/packages/Storable-0.6.7/ChangeLog	Sat Jul 13 21:00:27 2002
@@ -1,3 +1,21 @@
+Wed Oct 20 19:07:36 MEST 1999   Raphael Manfredi <Raphael_Manfredi at pobox.com>
+
+. Description:
+
+	Forgot to update VERSION
+
+Tue Oct 19 21:25:02 MEST 1999   Raphael Manfredi <Raphael_Manfredi at pobox.com>
+
+. Description:
+
+	Added mention of japanese translation for the manual page.
+
+	Fixed typo in macro that made threaded code not compilable,
+	especially on Win32 platforms.
+
+	Changed detection of older perls (pre-5.005) by testing PATCHLEVEL
+	directly instead of relying on internal symbols.
+
 Tue Sep 14 22:13:28 MEST 1999   Raphael Manfredi <Raphael_Manfredi at pobox.com>
 
 . Description:

Modified: trunk/orca/packages/Storable-0.6.7/patchlevel.h
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/patchlevel.h	(original)
+++ trunk/orca/packages/Storable-0.6.7/patchlevel.h	Sat Jul 13 21:00:27 2002
@@ -1 +1 @@
-#define PATCHLEVEL 5
+#define PATCHLEVEL 7

Modified: trunk/orca/packages/Storable-0.6.7/README
==============================================================================
--- trunk/orca/packages/Storable-0.6.7/README	(original)
+++ trunk/orca/packages/Storable-0.6.7/README	Sat Jul 13 21:00:27 2002
@@ -147,5 +147,10 @@
 	Andrew Ford <A.Ford at ford-mason.co.uk>
 	Gisle Aas <gisle at aas.no>
 	Jeff Gresham <gresham_jeffrey at jpmorgan.com>
+	Murray Nesbitt <murray at activestate.com>
 
 for their contributions.
+
+There is a Japanese translation of this man page available at
+http://member.nifty.ne.jp/hippo2000/perltips/storable.htm,
+courtesy of Kawai, Takanori <kawai at nippon-rad.co.jp>.




More information about the Orca-checkins mailing list