gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r29937 - gnunet/src/topology


From: gnunet
Subject: [GNUnet-SVN] r29937 - gnunet/src/topology
Date: Mon, 7 Oct 2013 20:16:19 +0200

Author: grothoff
Date: 2013-10-07 20:16:19 +0200 (Mon, 07 Oct 2013)
New Revision: 29937

Modified:
   gnunet/src/topology/friends.c
   gnunet/src/topology/gnunet-daemon-topology.c
Log:
implementing FRIENDS file writing logic

Modified: gnunet/src/topology/friends.c
===================================================================
--- gnunet/src/topology/friends.c       2013-10-07 18:08:05 UTC (rev 29936)
+++ gnunet/src/topology/friends.c       2013-10-07 18:16:19 UTC (rev 29937)
@@ -117,6 +117,10 @@
  */
 struct GNUNET_FRIENDS_Writer
 {
+  /**
+   * Handle to the file.
+   */
+  struct GNUNET_DISK_FileHandle *fh;
 };
 
 
@@ -130,7 +134,30 @@
 struct GNUNET_FRIENDS_Writer *
 GNUNET_FRIENDS_write_start (const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
-  return NULL;
+  struct GNUNET_FRIENDS_Writer *w;
+  char *fn;
+
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_get_value_filename (cfg, "TOPOLOGY", "FRIENDS", 
&fn))
+  {
+    GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
+                              "topology", "FRIENDS");
+    return NULL;
+  }
+  if (GNUNET_OK == GNUNET_DISK_file_test (fn))
+    GNUNET_DISK_file_backup (fn);
+  w = GNUNET_new (struct GNUNET_FRIENDS_Writer);
+  w->fh = GNUNET_DISK_file_open  (fn,
+                                  GNUNET_DISK_OPEN_CREATE |
+                                  GNUNET_DISK_OPEN_WRITE |
+                                  GNUNET_DISK_OPEN_FAILIFEXISTS,
+                                  GNUNET_DISK_PERM_USER_READ);
+  if (NULL == w->fh)
+  {
+    GNUNET_free (w);
+    return NULL;
+  }
+  return w;
 }
 
 
@@ -143,7 +170,11 @@
 int
 GNUNET_FRIENDS_write_stop (struct GNUNET_FRIENDS_Writer *w)
 {
-  return GNUNET_SYSERR;
+  int ret;
+
+  ret = GNUNET_DISK_file_close (w->fh);
+  GNUNET_free (w);
+  return ret;
 }
 
 
@@ -158,7 +189,26 @@
 GNUNET_FRIENDS_write (struct GNUNET_FRIENDS_Writer *w,
                       const struct GNUNET_PeerIdentity *friend)
 {
-  return GNUNET_SYSERR;
+  char *buf;
+  char *ret;
+  size_t slen;
+
+  ret = GNUNET_CRYPTO_ecc_public_sign_key_to_string (&friend->public_key);
+  GNUNET_asprintf (&buf,
+                   "%s\n",
+                   ret);
+  GNUNET_free (ret);
+  slen = strlen (buf);
+  if (slen !=
+      GNUNET_DISK_file_write (w->fh,
+                              buf,
+                              slen))
+  {
+    GNUNET_free (buf);
+    return GNUNET_SYSERR;
+  }
+  GNUNET_free (buf);
+  return GNUNET_OK;
 }
 
 

Modified: gnunet/src/topology/gnunet-daemon-topology.c
===================================================================
--- gnunet/src/topology/gnunet-daemon-topology.c        2013-10-07 18:08:05 UTC 
(rev 29936)
+++ gnunet/src/topology/gnunet-daemon-topology.c        2013-10-07 18:16:19 UTC 
(rev 29937)
@@ -1019,7 +1019,7 @@
   {
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
                 _("Found myself `%s' in friend list (useless, ignored)\n"),
-                GNUNET_i2s (&pid));
+                GNUNET_i2s (pid));
     return;
   }
   (*entries_found)++;




reply via email to

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