]> git.kaiwu.me - klib.git/commitdiff
use fread() instead of fgetc() in example
authorHeng Li <lh3@live.co.uk>
Mon, 16 Jan 2012 02:49:51 +0000 (21:49 -0500)
committerHeng Li <lh3@live.co.uk>
Mon, 16 Jan 2012 02:49:51 +0000 (21:49 -0500)
kopen.c

diff --git a/kopen.c b/kopen.c
index e228aa9ae9ca1f46ce4fe42d315cee7ae5f5cc8f..04b24b032d9b460a9eec895ad73afa9863491fad 100644 (file)
--- a/kopen.c
+++ b/kopen.c
@@ -308,10 +308,12 @@ int kclose(void *a)
 }
 
 #ifdef _KO_MAIN
+#define BUF_SIZE 0x10000
 int main(int argc, char *argv[])
 {
        void *x;
-       int fd, c;
+       int l, fd;
+       unsigned char buf[BUF_SIZE];
        FILE *fp;
        if (argc == 1) {
                fprintf(stderr, "Usage: kopen <file>\n");
@@ -323,11 +325,10 @@ int main(int argc, char *argv[])
                fprintf(stderr, "ERROR: fail to open the input\n");
                return 1;
        }
-       while (1) {
-               c = fgetc(fp);
-               if (feof(fp)) break;
-               putchar(c);
-       }
+       do {
+               if ((l = fread(buf, 1, BUF_SIZE, fp)) != 0)
+                       fwrite(buf, 1, l, stdout);
+       } while (l == BUF_SIZE);
        fclose(fp);
        kclose(x);
        return 0;