Add 'filesize' call.
[libguestfs.git] / daemon / file.c
index 62de116..839713f 100644 (file)
@@ -44,11 +44,7 @@ do_touch (const char *path)
     return -1;
   }
 
-#ifdef HAVE_FUTIMENS
   r = futimens (fd, NULL);
-#else
-  r = futimes (fd, NULL);
-#endif
   if (r == -1) {
     reply_with_perror ("futimens: %s", path);
     close (fd);
@@ -481,9 +477,9 @@ do_zfile (const char *method, const char *path)
   FILE *fp;
   char line[256];
 
-  if (strcmp (method, "gzip") == 0 || strcmp (method, "compress") == 0)
+  if (STREQ (method, "gzip") || STREQ (method, "compress"))
     zcat = "zcat";
-  else if (strcmp (method, "bzip2") == 0)
+  else if (STREQ (method, "bzip2"))
     zcat = "bzcat";
   else {
     reply_with_error ("zfile: unknown method");
@@ -524,3 +520,21 @@ do_zfile (const char *method, const char *path)
 
   return strdup (line);
 }
+
+int64_t
+do_filesize (const char *path)
+{
+  int r;
+  struct stat buf;
+
+  CHROOT_IN;
+  r = stat (path, &buf);        /* follow symlinks */
+  CHROOT_OUT;
+
+  if (r == -1) {
+    reply_with_perror ("filesize: %s", path);
+    return -1;
+  }
+
+  return buf.st_size;
+}