diff --git a/libc/stdio/fread.c b/libc/stdio/fread.c
index 9f9977f..69c40b3 100644
--- a/libc/stdio/fread.c
+++ b/libc/stdio/fread.c
@@ -48,29 +48,29 @@
 size_t
 fread(void *buf, size_t size, size_t count, FILE *fp)
 {
-	size_t resid;
-	char *p;
-	int r;
-	size_t total;
+    size_t resid;
+    char *p;
+    int r;
+    size_t total;
 
-	/*
-	 * The ANSI standard requires a return value of 0 for a count
-	 * or a size of 0.  Peculiarily, it imposes no such requirements
-	 * on fwrite; it only requires fread to be broken.
-	 */
-	if ((resid = count * size) == 0)
-		return (0);
-	if (fp->_r < 0)
-		fp->_r = 0;
-	total = resid;
-	p = buf;
+    /*
+     * The ANSI standard requires a return value of 0 for a count
+     * or a size of 0.  Peculiarily, it imposes no such requirements
+     * on fwrite; it only requires fread to be broken.
+     */
+    if ((resid = count * size) == 0)
+        return (0);
+    if (fp->_r < 0)
+        fp->_r = 0;
+    total = resid;
+    p = buf;
 
 #if 1  /* BIONIC: optimize unbuffered reads */
     if (fp->_flags & __SNBF && fp->_ur == 0)
     {
-       /* the following comes mainly from __srefill(), with slight
-        * modifications
-        */
+        /* the following comes mainly from __srefill(), with slight
+         * modifications
+         */
 
         /* make sure stdio is set up */
         if (!__sdidinit)
@@ -99,22 +99,22 @@
             }
             fp->_flags |= __SRD;
         } else {
-           /*
-            * We were reading.  If there is an ungetc buffer,
-            * we must have been reading from that.  Drop it,
-            * restoring the previous buffer (if any).  If there
-            * is anything in that buffer, return.
-            */
+            /*
+             * We were reading.  If there is an ungetc buffer,
+             * we must have been reading from that.  Drop it,
+             * restoring the previous buffer (if any).  If there
+             * is anything in that buffer, return.
+             */
             if (HASUB(fp)) {
                 FREEUB(fp);
             }
         }
 
-       /*
-        * Before reading from a line buffered or unbuffered file,
-        * flush all line buffered output files, per the ANSI C
-        * standard.
-        */
+        /*
+         * Before reading from a line buffered or unbuffered file,
+         * flush all line buffered output files, per the ANSI C
+         * standard.
+         */
 
         if (fp->_flags & (__SLBF|__SNBF))
             (void) _fwalk(lflush);
@@ -151,8 +151,8 @@
         }
     }
 
-	(void)memcpy((void *)p, (void *)fp->_p, resid);
-	fp->_r -= resid;
-	fp->_p += resid;
-	return (count);
+    (void)memcpy((void *)p, (void *)fp->_p, resid);
+    fp->_r -= resid;
+    fp->_p += resid;
+    return (count);
 }
