diff --git a/ndn-cpp/c/encoding/binary-xml-data.c b/ndn-cpp/c/encoding/binary-xml-data.c
index 385d229..776ca74 100644
--- a/ndn-cpp/c/encoding/binary-xml-data.c
+++ b/ndn-cpp/c/encoding/binary-xml-data.c
@@ -27,7 +27,7 @@
       (encoder, ndn_BinaryXml_DTag_SignatureBits, signature->signature, signature->signatureLength))
     return error;
   
-	if (error = ndn_BinaryXmlEncoder_writeElementClose(encoder))
+  if (error = ndn_BinaryXmlEncoder_writeElementClose(encoder))
     return error;
   
   return 0;    
@@ -90,7 +90,7 @@
   if (error = ndn_encodeBinaryXmlKeyLocator(&signedInfo->keyLocator, encoder))
     return error;
   
-	if (error = ndn_BinaryXmlEncoder_writeElementClose(encoder))
+  if (error = ndn_BinaryXmlEncoder_writeElementClose(encoder))
     return error;
   
   return 0;  
@@ -148,7 +148,7 @@
       (encoder, ndn_BinaryXml_DTag_Content, data->content, data->contentLength))
     return error;
   
-	if (error = ndn_BinaryXmlEncoder_writeElementClose(encoder))
+  if (error = ndn_BinaryXmlEncoder_writeElementClose(encoder))
     return error;
   
   return 0;
diff --git a/ndn-cpp/c/encoding/binary-xml-data.h b/ndn-cpp/c/encoding/binary-xml-data.h
index ebe2370..32c0cfb 100644
--- a/ndn-cpp/c/encoding/binary-xml-data.h
+++ b/ndn-cpp/c/encoding/binary-xml-data.h
@@ -4,14 +4,14 @@
  */
 
 #ifndef NDN_BINARY_XML_DATA_H
-#define	NDN_BINARY_XML_DATA_H
+#define NDN_BINARY_XML_DATA_H
 
 #include "../errors.h"
 #include "../data.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_decodeBinaryXmlData(struct ndn_Data *data, struct ndn_BinaryXmlDecoder *decoder);
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
diff --git a/ndn-cpp/c/encoding/binary-xml-decoder.c b/ndn-cpp/c/encoding/binary-xml-decoder.c
index 7e2140d..a6d7bfa 100644
--- a/ndn-cpp/c/encoding/binary-xml-decoder.c
+++ b/ndn-cpp/c/encoding/binary-xml-decoder.c
@@ -56,12 +56,12 @@
   unsigned int value = 0;
   int gotFirstOctet = 0;
   
-	while (1) {
+  while (1) {
     if (self->offset >= self->inputLength)
       return NDN_ERROR_read_past_the_end_of_the_input;
     
-		unsigned int octet = unsafeReadOctet(self);
-		
+    unsigned int octet = unsafeReadOctet(self);
+    
     if (!gotFirstOctet) {
       if (octet == 0)
         return NDN_ERROR_the_first_header_octet_may_not_be_zero;
@@ -69,17 +69,17 @@
       gotFirstOctet = 1;
     }
     
-		if (octet & ndn_BinaryXml_TT_FINAL) {
+    if (octet & ndn_BinaryXml_TT_FINAL) {
       // Finished.
-			*type = octet & ndn_BinaryXml_TT_MASK;
-			value = (value << ndn_BinaryXml_TT_VALUE_BITS) | ((octet >> ndn_BinaryXml_TT_BITS) & ndn_BinaryXml_TT_VALUE_MASK);
+      *type = octet & ndn_BinaryXml_TT_MASK;
+      value = (value << ndn_BinaryXml_TT_VALUE_BITS) | ((octet >> ndn_BinaryXml_TT_BITS) & ndn_BinaryXml_TT_VALUE_MASK);
       break;
-		}
-		
-    value = (value << ndn_BinaryXml_REGULAR_VALUE_BITS) | (octet & ndn_BinaryXml_REGULAR_VALUE_MASK);		
-	}
+    }
+    
+    value = (value << ndn_BinaryXml_REGULAR_VALUE_BITS) | (octet & ndn_BinaryXml_REGULAR_VALUE_MASK);    
+  }
 
-	*valueOut = value;
+  *valueOut = value;
   return 0;
 }
 
diff --git a/ndn-cpp/c/encoding/binary-xml-decoder.h b/ndn-cpp/c/encoding/binary-xml-decoder.h
index 87e1b7a..bd1197b 100644
--- a/ndn-cpp/c/encoding/binary-xml-decoder.h
+++ b/ndn-cpp/c/encoding/binary-xml-decoder.h
@@ -4,11 +4,11 @@
  */
 
 #ifndef NDN_BINARYXMLDECODER_H
-#define	NDN_BINARYXMLDECODER_H
+#define NDN_BINARYXMLDECODER_H
 
 #include "../errors.h"
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -173,7 +173,7 @@
   self->offset = offset;
 }
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
diff --git a/ndn-cpp/c/encoding/binary-xml.h b/ndn-cpp/c/encoding/binary-xml.h
index eb5d2b4..37abe96 100644
--- a/ndn-cpp/c/encoding/binary-xml.h
+++ b/ndn-cpp/c/encoding/binary-xml.h
@@ -4,14 +4,14 @@
  */
 
 #ifndef NDN_BINARYXML_H
-#define	NDN_BINARYXML_H
+#define NDN_BINARYXML_H
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
 enum {
-  ndn_BinaryXml_EXT = 0x00, 	
+  ndn_BinaryXml_EXT = 0x00,   
   ndn_BinaryXml_TAG = 0x01, 
   ndn_BinaryXml_DTAG = 0x02, 
   ndn_BinaryXml_ATTR = 0x03, 
@@ -40,14 +40,14 @@
   ndn_BinaryXml_DTag_ContentHash = 22,
   ndn_BinaryXml_DTag_Count = 24,
   ndn_BinaryXml_DTag_Header = 25,
-  ndn_BinaryXml_DTag_Interest = 26,	/* 20090915 */
+  ndn_BinaryXml_DTag_Interest = 26,  /* 20090915 */
   ndn_BinaryXml_DTag_Key = 27,
   ndn_BinaryXml_DTag_KeyLocator = 28,
   ndn_BinaryXml_DTag_KeyName = 29,
   ndn_BinaryXml_DTag_Length = 30,
   ndn_BinaryXml_DTag_Link = 31,
   ndn_BinaryXml_DTag_LinkAuthenticator = 32,
-  ndn_BinaryXml_DTag_NameComponentCount = 33,	/* DeprecatedInInterest */
+  ndn_BinaryXml_DTag_NameComponentCount = 33,  /* DeprecatedInInterest */
   ndn_BinaryXml_DTag_RootDigest = 36,
   ndn_BinaryXml_DTag_Signature = 37,
   ndn_BinaryXml_DTag_Start = 38,
@@ -70,7 +70,7 @@
   ndn_BinaryXml_DTag_PublisherCertificateDigest = 61,
   ndn_BinaryXml_DTag_PublisherIssuerKeyDigest = 62,
   ndn_BinaryXml_DTag_PublisherIssuerCertificateDigest = 63,
-  ndn_BinaryXml_DTag_ContentObject = 64,	/* 20090915 */
+  ndn_BinaryXml_DTag_ContentObject = 64,  /* 20090915 */
   ndn_BinaryXml_DTag_WrappedKey = 65,
   ndn_BinaryXml_DTag_WrappingKeyIdentifier = 66,
   ndn_BinaryXml_DTag_WrapAlgorithm = 67,
@@ -137,7 +137,7 @@
   ndn_BinaryXml_DTag_CCNProtocolDataUnit = 17702112
 };
 
-#ifdef	__cplusplus
+#ifdef __cplusplus
 }
 #endif
 
