diff --git a/ndn-cpp/c/encoding/binary-xml-element-reader.h b/ndn-cpp/c/encoding/binary-xml-element-reader.h
index 2b09e25..85ea934 100644
--- a/ndn-cpp/c/encoding/binary-xml-element-reader.h
+++ b/ndn-cpp/c/encoding/binary-xml-element-reader.h
@@ -4,13 +4,13 @@
  */
 
 #ifndef NDN_BINARYXMLELEMENTREADER_H
-#define	NDN_BINARYXMLELEMENTREADER_H
+#define NDN_BINARYXMLELEMENTREADER_H
 
 #include "../errors.h"
 #include "binary-xml-structure-decoder.h"
 #include "../util/dynamic-uchar-array.h"
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -76,7 +76,7 @@
 ndn_Error ndn_BinaryXmlElementReader_onReceivedData
   (struct ndn_BinaryXmlElementReader *self, unsigned char *data, unsigned int dataLength);
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
diff --git a/ndn-cpp/c/encoding/binary-xml-encoder.c b/ndn-cpp/c/encoding/binary-xml-encoder.c
index 0734bca..6754e20 100644
--- a/ndn-cpp/c/encoding/binary-xml-encoder.c
+++ b/ndn-cpp/c/encoding/binary-xml-encoder.c
@@ -30,7 +30,7 @@
     return error;
   
   ndn_memcpy(self->output.array + self->offset, array, arrayLength);
-	self->offset += arrayLength;
+  self->offset += arrayLength;
   
   return NDN_ERROR_success;
 }
@@ -41,24 +41,24 @@
 static unsigned int getNHeaderEncodingBytes(unsigned int x) 
 {
   // Do a quick check for pre-compiled results.
-	if (x <= ENCODING_LIMIT_1_BYTE) 
+  if (x <= ENCODING_LIMIT_1_BYTE) 
     return 1;
-	if (x <= ENCODING_LIMIT_2_BYTES) 
+  if (x <= ENCODING_LIMIT_2_BYTES) 
     return 2;
-	if (x <= ENCODING_LIMIT_3_BYTES) 
+  if (x <= ENCODING_LIMIT_3_BYTES) 
     return 3;
-	
-	unsigned int nBytes = 1;
-	
-	// Last byte gives you TT_VALUE_BITS.
-	// Remainder each gives you REGULAR_VALUE_BITS.
-	x >>= ndn_BinaryXml_TT_VALUE_BITS;
-	while (x != 0) {
-    ++nBytes;
-	  x >>= ndn_BinaryXml_REGULAR_VALUE_BITS;
-	}
   
-	return nBytes;
+  unsigned int nBytes = 1;
+  
+  // Last byte gives you TT_VALUE_BITS.
+  // Remainder each gives you REGULAR_VALUE_BITS.
+  x >>= ndn_BinaryXml_TT_VALUE_BITS;
+  while (x != 0) {
+    ++nBytes;
+    x >>= ndn_BinaryXml_REGULAR_VALUE_BITS;
+  }
+  
+  return nBytes;
 }
 
 /**
@@ -172,34 +172,34 @@
 
 ndn_Error ndn_BinaryXmlEncoder_encodeTypeAndValue(struct ndn_BinaryXmlEncoder *self, unsigned int type, unsigned int value)
 {
-	if (type > ndn_BinaryXml_UDATA)
-		return NDN_ERROR_header_type_is_out_of_range;
+  if (type > ndn_BinaryXml_UDATA)
+    return NDN_ERROR_header_type_is_out_of_range;
   
-	// Encode backwards. Calculate how many bytes we need.
-	unsigned int nEncodingBytes = getNHeaderEncodingBytes(value);
+  // Encode backwards. Calculate how many bytes we need.
+  unsigned int nEncodingBytes = getNHeaderEncodingBytes(value);
   ndn_Error error;
   if ((error = ndn_DynamicUCharArray_ensureLength(&self->output, self->offset + nEncodingBytes)))
     return error;
 
-	// Bottom 4 bits of value go in last byte with tag.
-	self->output.array[self->offset + nEncodingBytes - 1] = 
-		(ndn_BinaryXml_TT_MASK & type | 
-		((ndn_BinaryXml_TT_VALUE_MASK & value) << ndn_BinaryXml_TT_BITS)) |
-		ndn_BinaryXml_TT_FINAL; // set top bit for last byte
-	value >>= ndn_BinaryXml_TT_VALUE_BITS;
-	
-	// Rest of value goes into preceding bytes, 7 bits per byte. (Zero top bit is "more" flag.)
-	unsigned int i = self->offset + nEncodingBytes - 2;
-	while (value != 0 && i >= self->offset) {
-		self->output.array[i] = (value & ndn_BinaryXml_REGULAR_VALUE_MASK);
-		value >>= ndn_BinaryXml_REGULAR_VALUE_BITS;
-		--i;
-	}
-	if (value != 0)
+  // Bottom 4 bits of value go in last byte with tag.
+  self->output.array[self->offset + nEncodingBytes - 1] = 
+    (ndn_BinaryXml_TT_MASK & type | 
+    ((ndn_BinaryXml_TT_VALUE_MASK & value) << ndn_BinaryXml_TT_BITS)) |
+    ndn_BinaryXml_TT_FINAL; // set top bit for last byte
+  value >>= ndn_BinaryXml_TT_VALUE_BITS;
+  
+  // Rest of value goes into preceding bytes, 7 bits per byte. (Zero top bit is "more" flag.)
+  unsigned int i = self->offset + nEncodingBytes - 2;
+  while (value != 0 && i >= self->offset) {
+    self->output.array[i] = (value & ndn_BinaryXml_REGULAR_VALUE_MASK);
+    value >>= ndn_BinaryXml_REGULAR_VALUE_BITS;
+    --i;
+  }
+  if (value != 0)
     // This should not happen if getNHeaderEncodingBytes is correct.
-		return NDN_ERROR_encodeTypeAndValue_miscalculated_N_encoding_bytes;
-	
-	self->offset+= nEncodingBytes;
+    return NDN_ERROR_encodeTypeAndValue_miscalculated_N_encoding_bytes;
+  
+  self->offset+= nEncodingBytes;
   
   return NDN_ERROR_success;
 }
@@ -210,8 +210,8 @@
   if ((error = ndn_DynamicUCharArray_ensureLength(&self->output, self->offset + 1)))
     return error;
   
-	self->output.array[self->offset] = ndn_BinaryXml_CLOSE;
-	self->offset += 1;
+  self->output.array[self->offset] = ndn_BinaryXml_CLOSE;
+  self->offset += 1;
   
   return NDN_ERROR_success;
 }
diff --git a/ndn-cpp/c/encoding/binary-xml-encoder.h b/ndn-cpp/c/encoding/binary-xml-encoder.h
index 309a789..ba67e8f 100644
--- a/ndn-cpp/c/encoding/binary-xml-encoder.h
+++ b/ndn-cpp/c/encoding/binary-xml-encoder.h
@@ -4,13 +4,13 @@
  */
 
 #ifndef NDN_BINARYXMLENCODER_H
-#define	NDN_BINARYXMLENCODER_H
+#define NDN_BINARYXMLENCODER_H
 
 #include "../errors.h"
 #include "../util/dynamic-uchar-array.h"
 #include "binary-xml.h"
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -172,7 +172,7 @@
     return NDN_ERROR_success;
 }
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
diff --git a/ndn-cpp/c/encoding/binary-xml-interest.c b/ndn-cpp/c/encoding/binary-xml-interest.c
index b5c17a4..a540222 100644
--- a/ndn-cpp/c/encoding/binary-xml-interest.c
+++ b/ndn-cpp/c/encoding/binary-xml-interest.c
@@ -32,14 +32,14 @@
     else if (entry->type == ndn_Exclude_ANY) {
       if ((error = ndn_BinaryXmlEncoder_writeElementStartDTag(encoder, ndn_BinaryXml_DTag_Any)))
         return error;
-    	if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
+      if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
         return error;
     }
     else
       return NDN_ERROR_unrecognized_ndn_ExcludeType;
-	}
+  }
   
-	if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
+  if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
     return error;
   
   return NDN_ERROR_success;  
@@ -163,7 +163,7 @@
       (encoder, ndn_BinaryXml_DTag_Nonce, interest->nonce, interest->nonceLength)))
     return error;
   
-	if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
+  if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
     return error;
   
   return NDN_ERROR_success;  
diff --git a/ndn-cpp/c/encoding/binary-xml-interest.h b/ndn-cpp/c/encoding/binary-xml-interest.h
index a1c9631..e8c955b 100644
--- a/ndn-cpp/c/encoding/binary-xml-interest.h
+++ b/ndn-cpp/c/encoding/binary-xml-interest.h
@@ -4,14 +4,14 @@
  */
 
 #ifndef NDN_BINARYXMLINTEREST_H
-#define	NDN_BINARYXMLINTEREST_H
+#define NDN_BINARYXMLINTEREST_H
 
 #include "../errors.h"
 #include "../interest.h"
 #include "binary-xml-encoder.h"
 #include "binary-xml-decoder.h"
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -19,7 +19,7 @@
 
 ndn_Error ndn_decodeBinaryXmlInterest(struct ndn_Interest *interest, struct ndn_BinaryXmlDecoder *decoder);
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
diff --git a/ndn-cpp/c/encoding/binary-xml-key.c b/ndn-cpp/c/encoding/binary-xml-key.c
index 4375c6c..5b6de79 100644
--- a/ndn-cpp/c/encoding/binary-xml-key.c
+++ b/ndn-cpp/c/encoding/binary-xml-key.c
@@ -33,7 +33,7 @@
   else
     return NDN_ERROR_unrecognized_ndn_KeyLocatorType;
   
-	if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
+  if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
     return error;
   
   return NDN_ERROR_success;
diff --git a/ndn-cpp/c/encoding/binary-xml-key.h b/ndn-cpp/c/encoding/binary-xml-key.h
index 38c7420..c069356 100644
--- a/ndn-cpp/c/encoding/binary-xml-key.h
+++ b/ndn-cpp/c/encoding/binary-xml-key.h
@@ -4,14 +4,14 @@
  */
 
 #ifndef NDN_BINARYXMLKEY_H
-#define	NDN_BINARYXMLKEY_H
+#define NDN_BINARYXMLKEY_H
 
 #include "../errors.h"
 #include "../key.h"
 #include "binary-xml-encoder.h"
 #include "binary-xml-decoder.h"
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -40,7 +40,7 @@
  */
 ndn_Error ndn_decodeOptionalBinaryXmlKeyLocator(struct ndn_KeyLocator *keyLocator, struct ndn_BinaryXmlDecoder *decoder);
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
diff --git a/ndn-cpp/c/encoding/binary-xml-name.c b/ndn-cpp/c/encoding/binary-xml-name.c
index 776965a..fb99070 100644
--- a/ndn-cpp/c/encoding/binary-xml-name.c
+++ b/ndn-cpp/c/encoding/binary-xml-name.c
@@ -19,9 +19,9 @@
     if ((error = ndn_BinaryXmlEncoder_writeBlobDTagElement
         (encoder, ndn_BinaryXml_DTag_Component, name->components[i].value, name->components[i].valueLength)))
       return error;
-	}
+  }
   
-	if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
+  if ((error = ndn_BinaryXmlEncoder_writeElementClose(encoder)))
     return error;
   
   return NDN_ERROR_success;
diff --git a/ndn-cpp/c/encoding/binary-xml-name.h b/ndn-cpp/c/encoding/binary-xml-name.h
index db2d3cd..6590aaa 100644
--- a/ndn-cpp/c/encoding/binary-xml-name.h
+++ b/ndn-cpp/c/encoding/binary-xml-name.h
@@ -4,14 +4,14 @@
  */
 
 #ifndef NDN_BINARYXMLNAME_H
-#define	NDN_BINARYXMLNAME_H
+#define NDN_BINARYXMLNAME_H
 
 #include "../errors.h"
 #include "../name.h"
 #include "binary-xml-encoder.h"
 #include "binary-xml-decoder.h"
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -19,7 +19,7 @@
 
 ndn_Error ndn_decodeBinaryXmlName(struct ndn_Name *name, struct ndn_BinaryXmlDecoder *decoder);
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
diff --git a/ndn-cpp/c/encoding/binary-xml-publisher-public-key-digest.h b/ndn-cpp/c/encoding/binary-xml-publisher-public-key-digest.h
index c6017b1..a649003 100644
--- a/ndn-cpp/c/encoding/binary-xml-publisher-public-key-digest.h
+++ b/ndn-cpp/c/encoding/binary-xml-publisher-public-key-digest.h
@@ -4,14 +4,14 @@
  */
 
 #ifndef NDN_BINARYXMLPUBLISHERPUBLICKEYDIGEST_H
-#define	NDN_BINARYXMLPUBLISHERPUBLICKEYDIGEST_H
+#define NDN_BINARYXMLPUBLISHERPUBLICKEYDIGEST_H
 
 #include "../errors.h"
 #include "../publisher-public-key-digest.h"
 #include "binary-xml-encoder.h"
 #include "binary-xml-decoder.h"
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -44,7 +44,7 @@
 ndn_Error ndn_decodeOptionalBinaryXmlPublisherPublicKeyDigest
   (struct ndn_PublisherPublicKeyDigest *publisherPublicKeyDigest, struct ndn_BinaryXmlDecoder *decoder);
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
diff --git a/ndn-cpp/c/encoding/binary-xml-structure-decoder.h b/ndn-cpp/c/encoding/binary-xml-structure-decoder.h
index 8c561a1..54c8648 100644
--- a/ndn-cpp/c/encoding/binary-xml-structure-decoder.h
+++ b/ndn-cpp/c/encoding/binary-xml-structure-decoder.h
@@ -4,11 +4,11 @@
  */
 
 #ifndef NDN_BINARYXMLSTRUCTUREDECODER_H
-#define	NDN_BINARYXMLSTRUCTUREDECODER_H
+#define NDN_BINARYXMLSTRUCTUREDECODER_H
 
 #include "../errors.h"
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -54,7 +54,7 @@
   self->offset = offset;
 }
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
