From cbfcd06cb32cc5c35bfb8ddb499cb952024068a4 Mon Sep 17 00:00:00 2001
From: Carl N Baldwin <cnb@hpsvcnb.fc.hp.com>
Date: Thu, 20 Oct 2005 10:31:26 -0600
Subject: [PATCH] Wrote some ruby scripts to help with restore

---
 scripts/Makefile.am        |  1 +
 scripts/files-from-date.rb | 15 +++++++++++++++
 scripts/find-cmd.sh        |  2 +-
 scripts/list-dates.rb      | 19 +++++++++++--------
 4 files changed, 28 insertions(+), 9 deletions(-)
 create mode 100755 scripts/files-from-date.rb

diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 1d1126c..6711a00 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -1,4 +1,5 @@
 bin_SCRIPTS = \
+  files-from-date.rb \
   find-cmd.sh \
   list-dates.rb \
   other-commands \
diff --git a/scripts/files-from-date.rb b/scripts/files-from-date.rb
new file mode 100755
index 0000000..4fde0c5
--- /dev/null
+++ b/scripts/files-from-date.rb
@@ -0,0 +1,15 @@
+#!/usr/bin/ruby
+
+# Make sure the record separator is zero rather than new-line
+$/ = "\0"
+
+# The only argument is the date for which to list files
+date = ARGV.shift.to_i
+
+ARGF.each do |line|
+  # The seventh and eigth fields are the backup date and the file name.
+  backupdate,name = line.split( ' ', 8 )[6,7]
+
+  # Print the name if the backup date matches
+  print name if date == backupdate.to_i
+end
diff --git a/scripts/find-cmd.sh b/scripts/find-cmd.sh
index 964dd15..d9efb29 100755
--- a/scripts/find-cmd.sh
+++ b/scripts/find-cmd.sh
@@ -2,6 +2,6 @@
 
 {
   for type in d f l; do
-    find . -type $type -printf "$type %#m %u %g %s %CY%Cm%Cd%CH%CM%CS 0 %p\0"
+    find . -type $type -printf "$type %#m %u %g %s %CY%Cm%Cd%CH%CM%CS %CS %p\0"
   done
 }
diff --git a/scripts/list-dates.rb b/scripts/list-dates.rb
index b8a5c50..18cdef9 100755
--- a/scripts/list-dates.rb
+++ b/scripts/list-dates.rb
@@ -1,14 +1,17 @@
 #!/usr/bin/ruby
 
+# Make sure the record separator is zero rather than new-line
+$/ = "\0"
+
+# Create a set of backup dates
 require 'set'
+dates = SortedSet.new
 
-dates = Set.new
+# Split each input record into 8 fields on spaces and grab the 7th as integer
+date_array = ARGF.map { |rec| rec.split( ' ', 8 )[6].to_i }
 
-ARGF.each( "\0" ) do |line|
-  fields = line.split ' ', 8
-  dates.add fields[6]
-end
+# Merge the dates into the set
+dates.merge date_array
 
-dates.each do |date|
-  puts date
-end
+# Output the sorted set
+puts dates.to_a
-- 
2.34.1