gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r33577 - gnunet/src/dns


From: gnunet
Subject: [GNUnet-SVN] r33577 - gnunet/src/dns
Date: Sat, 7 Jun 2014 02:33:55 +0200

Author: grothoff
Date: 2014-06-07 02:33:55 +0200 (Sat, 07 Jun 2014)
New Revision: 33577

Modified:
   gnunet/src/dns/dnsparser.c
Log:
draft hex2bin, bin2hex

Modified: gnunet/src/dns/dnsparser.c
===================================================================
--- gnunet/src/dns/dnsparser.c  2014-06-07 00:24:59 UTC (rev 33576)
+++ gnunet/src/dns/dnsparser.c  2014-06-07 00:33:55 UTC (rev 33577)
@@ -1241,8 +1241,17 @@
 GNUNET_DNSPARSER_bin_to_hex (const void *data,
                              size_t data_size)
 {
-  GNUNET_break (0); // FIXME: not implemented
-  return NULL;
+  char *ret;
+  size_t off;
+  const uint8_t *idata;
+
+  idata = data;
+  ret = GNUNET_malloc (data_size * 2 + 1);
+  for (off = 0; off < data_size; off++)
+    sprintf (&ret[off * 2],
+             "%x",
+             idata[off]);
+  return ret;
 }
 
 
@@ -1258,10 +1267,25 @@
 GNUNET_DNSPARSER_hex_to_bin (const char *hex,
                              void *data)
 {
-  GNUNET_break (0);  // FIXME: not implemented
-  return 0;
+  size_t data_size;
+  size_t off;
+  uint8_t *idata;
+  unsigned int h;
+  char in[3];
+
+  data_size = strlen (hex) / 2;
+  idata = data;
+  in[2] = '\0';
+  for (off = 0; off < data_size; off++)
+  {
+    in[0] = tolower ((int) hex[off * 2]);
+    in[1] = tolower ((int) hex[off * 2 + 1]);
+    if (1 != sscanf (in, "%x", &h))
+      return off;
+    idata[off] = (uint8_t) h;
+  }
+  return off;
 }
 
 
-
 /* end of dnsparser.c */




reply via email to

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