# File lib/puppet/network/client/dipper.rb, line 48
48:     def restore(file,sum)
49:         restore = true
50:         if FileTest.exists?(file)
51:             cursum = Digest::MD5.hexdigest(::File.read(file))
52: 
53:             # if the checksum has changed...
54:             # this might be extra effort
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