Merge branch 'master' of github.com:Minep/lunaix-os
[lunaix-os.git] / lunaix-os / usr / cat / main.c
index 0a15f8cdc2fa1bd851b33523dfef7e79c189ca02..9f0d35b54b9ed463a9bce190304812b0733d0e62 100644 (file)
@@ -11,14 +11,26 @@ int
 main(int argc, const char* argv[])
 {
     int fd = 0;
-    unsigned int size = 0;
+    int size = 0;
+    struct file_stat stat;
     for (int i = 1; i < argc; i++) {
         fd = open(argv[i], FO_RDONLY);
+                
         if (fd < 0) {
             printf("open failed: %s (error: %d)", argv[i], fd);
             continue;
         }
 
+        if (fstat(fd, &stat) < 0) {
+            printf("fail to get stat %d\n", errno);
+            return 1;
+        }
+
+        if (!(stat.mode & F_MFILE)) {
+            printf("%s is a directory", argv[i]);
+            return 1;
+        }
+
         do {
             size = read(fd, buffer, BUFSIZE);
             write(stdout, buffer, size);