Blob Blame History Raw
From dc24aa1c9702114d3a66218a366b2b4292f34352 Mon Sep 17 00:00:00 2001
From: Nikias Bassen <nikias@gmx.li>
Date: Sat, 31 Oct 2009 01:47:17 +0000
Subject: Support for setting file modification times

---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 131d683..48ee052 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -1075,6 +1075,41 @@ g_vfs_backend_afc_set_display_name (GVfsBackend *backend,
 }
 
 static void
+g_vfs_backend_afc_set_attribute (GVfsBackend *backend,
+				 GVfsJobSetAttribute *job,
+				 const char *filename,
+				 const char *attribute,
+				 GFileAttributeType type,
+				 gpointer value_p,
+				 GFileQueryInfoFlags flags)
+{
+  GVfsBackendAfc *self;
+  uint64_t mtime = 0;
+
+  self = G_VFS_BACKEND_AFC(backend);
+  g_return_if_fail(self->connected);
+
+  if (g_str_equal (attribute, G_FILE_ATTRIBUTE_TIME_MODIFIED) != FALSE)
+    {
+      g_vfs_job_failed (G_VFS_JOB (job),
+			G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+			_("Operation unsupported"));
+      return;
+    }
+
+  mtime = *(guint64*)(value_p) * (guint64)1000000000;
+
+  if (G_UNLIKELY(g_vfs_backend_afc_check (afc_set_file_time (self->afc_cli,
+                                                             filename, mtime),
+                                          G_VFS_JOB(job))))
+    {
+      return;
+    }
+
+  g_vfs_job_succeeded (G_VFS_JOB(job));
+}
+
+static void
 g_vfs_backend_afc_make_directory (GVfsBackend *backend,
                                   GVfsJobMakeDirectory *job,
                                   const char *path)
@@ -1221,6 +1256,7 @@ g_vfs_backend_afc_class_init (GVfsBackendAfcClass *klass)
   backend_class->make_symlink     = g_vfs_backend_afc_make_symlink;
   backend_class->move             = g_vfs_backend_afc_move;
   backend_class->set_display_name = g_vfs_backend_afc_set_display_name;
+  backend_class->set_attribute    = g_vfs_backend_afc_set_attribute;
 }
 
 /*
--
cgit v0.8.3.1