Windows impl of GNUNET_DISK_file_get_identifiers, untested
authorNils Durner <durner@gnunet.org>
Mon, 21 Jun 2010 17:27:20 +0000 (17:27 +0000)
committerNils Durner <durner@gnunet.org>
Mon, 21 Jun 2010 17:27:20 +0000 (17:27 +0000)
src/util/disk.c

index 6cac1f70c1deef5df6bc42e73a12b7c5659671fe..60288bc5d6960d6ed847cf283702bbd98651b061 100644 (file)
@@ -260,6 +260,26 @@ GNUNET_DISK_file_get_identifiers (const char *filename,
       *ino = (uint64_t) sbuf.st_ino;
       return GNUNET_OK;
     }
+#elif WINDOWS
+  // FIXME NILS: test this
+  struct GNUNET_DISK_FileHandle *fh;
+  BY_HANDLE_FILE_INFORMATION info;
+  int succ;
+
+  fh = GNUNET_DISK_file_open(filename, GNUNET_DISK_OPEN_READ, 0);
+  if (fh == NULL)
+    return GNUNET_SYSERR;
+  succ = GetFileInformationByHandle(fh->h, &info);
+  GNUNET_DISK_file_close(fh);
+  if (succ)
+    {
+      *dev = info.dwVolumeSerialNumber;
+      *ino = ((info.nFileIndexHigh << sizeof(DWORD)) | info.nFileIndexLow);
+      return GNUNET_OK;
+    }
+  else
+    return GNUNET_SYSERR;
+
 #endif
   return GNUNET_SYSERR;
 }