diff --git a/Modules/_struct.c b/Modules/_struct.c
index 441da03..b6be5b6 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -273,7 +273,7 @@
 
 static PyObject *
 unpack_float(const char *p,  /* start of 4-byte string */
-             int le)	     /* true for little-endian, false for big-endian */
+	     int le)	     /* true for little-endian, false for big-endian */
 {
 	double x;
 
@@ -285,7 +285,7 @@
 
 static PyObject *
 unpack_double(const char *p,  /* start of 8-byte string */
-              int le)         /* true for little-endian, false for big-endian */
+	      int le)         /* true for little-endian, false for big-endian */
 {
 	double x;
 
@@ -636,7 +636,7 @@
 static int
 np_bool(char *p, PyObject *v, const formatdef *f)
 {
-	BOOL_TYPE y; 
+	BOOL_TYPE y;
 	y = PyObject_IsTrue(v);
 	memcpy(p, (char *)&y, sizeof y);
 	return 0;
@@ -857,7 +857,7 @@
 	if (v == NULL)
 		return -1;
 	res = _PyLong_AsByteArray((PyLongObject *)v,
-			   	  (unsigned char *)p,
+				  (unsigned char *)p,
 				  8,
 				  0, /* little_endian */
 				  1  /* signed */);
@@ -873,7 +873,7 @@
 	if (v == NULL)
 		return -1;
 	res = _PyLong_AsByteArray((PyLongObject *)v,
-			   	  (unsigned char *)p,
+				  (unsigned char *)p,
 				  8,
 				  0, /* little_endian */
 				  0  /* signed */);
@@ -908,7 +908,7 @@
 static int
 bp_bool(char *p, PyObject *v, const formatdef *f)
 {
-	char y; 
+	char y;
 	y = PyObject_IsTrue(v);
 	memcpy(p, (char *)&y, sizeof y);
 	return 0;
@@ -1075,7 +1075,7 @@
 	if (v == NULL)
 		return -1;
 	res = _PyLong_AsByteArray((PyLongObject*)v,
-			   	  (unsigned char *)p,
+				  (unsigned char *)p,
 				  8,
 				  1, /* little_endian */
 				  1  /* signed */);
@@ -1091,7 +1091,7 @@
 	if (v == NULL)
 		return -1;
 	res = _PyLong_AsByteArray((PyLongObject*)v,
-			   	  (unsigned char *)p,
+				  (unsigned char *)p,
 				  8,
 				  1, /* little_endian */
 				  0  /* signed */);
@@ -1797,7 +1797,7 @@
 		return NULL;
 	n = ((PyStructObject *)s_object)->s_size;
 	Py_DECREF(s_object);
-    	return PyInt_FromSsize_t(n);
+	return PyInt_FromSsize_t(n);
 }
 
 PyDoc_STRVAR(pack_doc,
@@ -1823,7 +1823,7 @@
 		Py_DECREF(newargs);
 		return NULL;
 	}
-    	result = s_pack(s_object, newargs);
+	result = s_pack(s_object, newargs);
 	Py_DECREF(newargs);
 	Py_DECREF(s_object);
 	return result;
@@ -1853,7 +1853,7 @@
 		Py_DECREF(newargs);
 		return NULL;
 	}
-    	result = s_pack_into(s_object, newargs);
+	result = s_pack_into(s_object, newargs);
 	Py_DECREF(newargs);
 	Py_DECREF(s_object);
 	return result;
@@ -1874,7 +1874,7 @@
 	s_object = cache_struct(fmt);
 	if (s_object == NULL)
 		return NULL;
-    	result = s_unpack(s_object, inputstr);
+	result = s_unpack(s_object, inputstr);
 	Py_DECREF(s_object);
 	return result;
 }
@@ -1903,20 +1903,20 @@
 		Py_DECREF(newargs);
 		return NULL;
 	}
-    	result = s_unpack_from(s_object, newargs, kwds);
+	result = s_unpack_from(s_object, newargs, kwds);
 	Py_DECREF(newargs);
 	Py_DECREF(s_object);
 	return result;
 }
 
 static struct PyMethodDef module_functions[] = {
-	{"_clearcache",	(PyCFunction)clearcache,	METH_NOARGS, 	clearcache_doc},
-	{"calcsize",	calcsize,	METH_O, 	calcsize_doc},
-	{"pack",	pack,		METH_VARARGS, 	pack_doc},
-	{"pack_into",	pack_into,	METH_VARARGS, 	pack_into_doc},
-	{"unpack",	unpack,       	METH_VARARGS, 	unpack_doc},
-	{"unpack_from",	(PyCFunction)unpack_from, 	
-			METH_VARARGS|METH_KEYWORDS, 	unpack_from_doc},
+	{"_clearcache",	(PyCFunction)clearcache,	METH_NOARGS,	clearcache_doc},
+	{"calcsize",	calcsize,	METH_O,	calcsize_doc},
+	{"pack",	pack,		METH_VARARGS,	pack_doc},
+	{"pack_into",	pack_into,	METH_VARARGS,	pack_into_doc},
+	{"unpack",	unpack,	METH_VARARGS,	unpack_doc},
+	{"unpack_from",	(PyCFunction)unpack_from,
+			METH_VARARGS|METH_KEYWORDS,	unpack_from_doc},
 	{NULL,	 NULL}		/* sentinel */
 };
 
