gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r5008 - GNUnet/src/applications/fs/uritrack


From: gnunet
Subject: [GNUnet-SVN] r5008 - GNUnet/src/applications/fs/uritrack
Date: Sun, 10 Jun 2007 16:43:31 -0600 (MDT)

Author: grothoff
Date: 2007-06-10 16:43:30 -0600 (Sun, 10 Jun 2007)
New Revision: 5008

Modified:
   GNUnet/src/applications/fs/uritrack/file_info.c
Log:
track only once

Modified: GNUnet/src/applications/fs/uritrack/file_info.c
===================================================================
--- GNUnet/src/applications/fs/uritrack/file_info.c     2007-06-10 22:31:58 UTC 
(rev 5007)
+++ GNUnet/src/applications/fs/uritrack/file_info.c     2007-06-10 22:43:30 UTC 
(rev 5008)
@@ -137,6 +137,24 @@
   }
 }
 
+struct CheckPresentClosure {
+  const ECRS_FileInfo * fi;
+  int present;
+};
+
+static int checkPresent(const ECRS_FileInfo * fi,
+                       const HashCode512 * key,
+                       int isRoot,
+                       void * closure) {
+  struct CheckPresentClosure * cpc = closure;
+  if (ECRS_equalsUri(fi->uri,
+                    cpc->fi->uri)) {
+    cpc->present = 1;
+    return SYSERR;
+  }
+  return OK;
+}
+
 /**
  * Makes a URI available for directory building.
  */
@@ -149,9 +167,19 @@
   char * suri;
   int fh;
   char * fn;
+  struct CheckPresentClosure cpc;
 
   if (NO == URITRACK_trackStatus(ectx, cfg))
     return;
+  cpc.present = 0;
+  cpc.fi = fi;
+  URITRACK_listURIs(ectx,
+                   cfg,
+                   NO,
+                   &checkPresent,
+                   &cpc);
+  if (cpc.present == 1)
+    return;
   size = ECRS_sizeofMetaData(fi->meta,
                             ECRS_SERIALIZE_FULL | ECRS_SERIALIZE_NO_COMPRESS);
   data = MALLOC(size);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]