+ string [] fileDeps = response.FileDependencies;
+
+ if (fileDeps == null || fileDeps.Length == 0)
+ return;
+
+ bool doEtag = etag != null && etag_from_file_dependencies;
+ if (!doEtag && !last_modified_from_file_dependencies)
+ return;
+
+ DateTime latest_mod = DateTime.MinValue, mod;
+ StringBuilder etagsb = new StringBuilder ();
+
+ foreach (string f in fileDeps) {
+ if (!File.Exists (f))
+ continue;
+ try {
+ mod = File.GetLastWriteTime (f);
+ } catch {
+ // ignore
+ continue;
+ }
+
+ if (last_modified_from_file_dependencies && mod > latest_mod)
+ latest_mod = mod;
+ if (doEtag)
+ etagsb.AppendFormat ("{0}", mod.Ticks.ToString ("x"));
+ }
+
+ if (last_modified_from_file_dependencies && latest_mod > DateTime.MinValue) {
+ last_modified = latest_mod;
+ have_last_modified = true;
+ }
+
+ if (doEtag && etagsb.Length > 0)
+ etag = etagsb.ToString ();