48: def restore(file,sum)
49: restore = true
50: if FileTest.exists?(file)
51: cursum = Digest::MD5.hexdigest(::File.read(file))
52:
53:
54:
55: if cursum == sum
56: restore = false
57: end
58: end
59:
60: if restore
61: if newcontents = getfile(sum)
62: tmp = ""
63: newsum = Digest::MD5.hexdigest(newcontents)
64: changed = nil
65: if FileTest.exists?(file) and ! FileTest.writable?(file)
66: changed = ::File.stat(file).mode
67: ::File.chmod(changed | 0200, file)
68: end
69: ::File.open(file, ::File::WRONLY|::File::TRUNC|::File::CREAT) { |of|
70: of.print(newcontents)
71: }
72: if changed
73: ::File.chmod(changed, file)
74: end
75: else
76: Puppet.err "Could not find file with checksum %s" % sum
77: return nil
78: end
79: return newsum
80: else
81: return nil
82: end
83: end