Add EXIT_FAILURE, EXIT_SUCCESS to syscall.h,
authorBen Pfaff <blp@cs.stanford.edu>
Tue, 23 May 2006 16:33:22 +0000 (16:33 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Tue, 23 May 2006 16:33:22 +0000 (16:33 +0000)
and use them in the example programs.
Add comments to syscall.h.

15 files changed:
src/examples/cat.c
src/examples/cmp.c
src/examples/cp.c
src/examples/echo.c
src/examples/hex-dump.c
src/examples/insult.c
src/examples/lineup.c
src/examples/ls.c
src/examples/mcat.c
src/examples/mcp.c
src/examples/mkdir.c
src/examples/pwd.c
src/examples/rm.c
src/examples/shell.c
src/lib/user/syscall.h

index 6ebf781f4bbf24c9da44084f32f471300b511c76..c8d229da8266847c15ccc1d3af7afd19c3ebc07f 100644 (file)
@@ -8,6 +8,7 @@
 int
 main (int argc, char *argv[]) 
 {
+  bool success = true;
   int i;
   
   for (i = 1; i < argc; i++) 
@@ -16,6 +17,7 @@ main (int argc, char *argv[])
       if (fd < 0) 
         {
           printf ("%s: open failed\n", argv[i]);
+          success = false;
           continue;
         }
       for (;;) 
@@ -28,5 +30,5 @@ main (int argc, char *argv[])
         }
       close (fd);
     }
-  return 0;
+  return success ? EXIT_SUCCESS : EXIT_FAILURE;
 }
index a616a7ec574cba0392fbcd1f7f1a63be6154ebff..94b406d1518431bc17dd36625bbcb803fe80abc2 100644 (file)
@@ -13,7 +13,7 @@ main (int argc, char *argv[])
   if (argc != 3) 
     {
       printf ("usage: cmp A B\n");
-      return 1;
+      return EXIT_FAILURE;
     }
 
   /* Open files. */
@@ -21,13 +21,13 @@ main (int argc, char *argv[])
   if (fd[0] < 0) 
     {
       printf ("%s: open failed\n", argv[1]);
-      return 1;
+      return EXIT_FAILURE;
     }
   fd[1] = open (argv[2]);
   if (fd[1] < 0) 
     {
       printf ("%s: open failed\n", argv[1]);
-      return 1;
+      return EXIT_FAILURE;
     }
 
   /* Compare data. */
@@ -53,7 +53,7 @@ main (int argc, char *argv[])
                     pos + i,
                     buffer[0][i], buffer[0][i], argv[1],
                     buffer[1][i], buffer[1][i], argv[2]);
-            return 1;
+            return EXIT_FAILURE;
           }
 
       if (min_read < bytes_read[1])
@@ -64,5 +64,5 @@ main (int argc, char *argv[])
 
   printf ("%s and %s are identical\n", argv[1], argv[2]);
 
-  return 0;
+  return EXIT_SUCCESS;
 }
index 0c8c1a5d673c98fba8af1e9a87dccfc2c71c9150..86a5cd7562fcf633d65206ac9e5be7873859f741 100644 (file)
@@ -13,7 +13,7 @@ main (int argc, char *argv[])
   if (argc != 3) 
     {
       printf ("usage: cp OLD NEW\n");
-      return 1;
+      return EXIT_FAILURE;
     }
 
   /* Open input file. */
@@ -21,20 +21,20 @@ main (int argc, char *argv[])
   if (in_fd < 0) 
     {
       printf ("%s: open failed\n", argv[1]);
-      return 1;
+      return EXIT_FAILURE;
     }
 
   /* Create and open output file. */
   if (!create (argv[2], filesize (in_fd))) 
     {
       printf ("%s: create failed\n", argv[2]);
-      return 1;
+      return EXIT_FAILURE;
     }
   out_fd = open (argv[2]);
   if (out_fd < 0) 
     {
       printf ("%s: open failed\n", argv[2]);
-      return 1;
+      return EXIT_FAILURE;
     }
 
   /* Copy data. */
@@ -47,9 +47,9 @@ main (int argc, char *argv[])
       if (write (out_fd, buffer, bytes_read) != bytes_read) 
         {
           printf ("%s: write failed\n", argv[2]);
-          return 1;
+          return EXIT_FAILURE;
         }
     }
 
-  return 0;
+  return EXIT_SUCCESS;
 }
index c0ecd004b3c4426268f6496987f2eb36831597c9..1b136f21cd748e5c2563d9418b41f09c3303e01d 100644 (file)
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include <syscall.h>
 
 int
 main (int argc, char **argv)
@@ -9,5 +10,5 @@ main (int argc, char **argv)
     printf ("%s ", argv[i]);
   printf ("\n");
 
-  return 0;
+  return EXIT_SUCCESS;
 }
index 713d9737f209ee7d9ca6f6efa860d05cb830f07f..ee313f2e84d2790ce173653e4f786389346e4551 100644 (file)
@@ -8,6 +8,7 @@
 int
 main (int argc, char *argv[]) 
 {
+  bool success = true;
   int i;
   
   for (i = 1; i < argc; i++) 
@@ -16,6 +17,7 @@ main (int argc, char *argv[])
       if (fd < 0) 
         {
           printf ("%s: open failed\n", argv[i]);
+          success = false;
           continue;
         }
       for (;;) 
@@ -29,5 +31,5 @@ main (int argc, char *argv[])
         }
       close (fd);
     }
-  return 0;
+  return success ? EXIT_SUCCESS : EXIT_FAILURE;
 }
index 80acc6e74c7ddbbc143f9238739b13823daa7f9a..98c4e6aebae157c63794b3aaf9c2c6e5c33468b7 100644 (file)
@@ -319,7 +319,7 @@ main (int argc, char *argv[])
           if (handle < 0)
             {
               printf ("%s: open failed\n", argv[i]);
-              return -1;
+              return EXIT_FAILURE;
             }
        }
       else
@@ -341,7 +341,7 @@ main (int argc, char *argv[])
   if (file_flag)
     close (handle);
 
-  return 0;
+  return EXIT_SUCCESS;
 }
 
 void
index 44636e74af5954ad7a8455134d2d4e309caa73c7..60402d0a90b20895060b0af9d7b08c0121cdd154 100644 (file)
@@ -42,5 +42,5 @@ main (int argc, char *argv[])
 
   close (handle);
 
-  return 0;
+  return EXIT_SUCCESS;
 }
index d927bc1da696763fae6c2a844d7a4df7c1062eac..fbe27a1e5023312bf0a421969ed8989f9d24b4c6 100644 (file)
 #include <stdio.h>
 #include <string.h>
 
-static void
+static bool
 list_dir (const char *dir, bool verbose) 
 {
   int dir_fd = open (dir);
   if (dir_fd == -1) 
     {
       printf ("%s: not found\n", dir);
-      return
+      return false;
     }
 
   if (isdir (dir_fd))
@@ -60,13 +60,16 @@ list_dir (const char *dir, bool verbose)
     }
   else 
     printf ("%s: not a directory\n", dir);
-  close (dir_fd); 
+  close (dir_fd);
+  return true;
 }
 
 int
 main (int argc, char *argv[]) 
 {
+  bool success = true;
   bool verbose = false;
+  
   if (argc > 1 && !strcmp (argv[1], "-l")) 
     {
       verbose = true;
@@ -75,12 +78,13 @@ main (int argc, char *argv[])
     }
   
   if (argc <= 1)
-    list_dir (".", verbose);
+    success = list_dir (".", verbose);
   else 
     {
       int i;
       for (i = 1; i < argc; i++)
-        list_dir (argv[i], verbose);
+        if (!list_dir (argv[i], verbose))
+          success = false;
     }
-  return 0;
+  return success ? EXIT_SUCCESS : EXIT_FAILURE;
 }
index 4d98db5833c811033bb2aeb3cdd225001cd4b7ed..7b397601045cb8f24c4b00e055b26fbc851ebf91 100644 (file)
@@ -23,7 +23,7 @@ main (int argc, char *argv[])
       if (fd < 0) 
         {
           printf ("%s: open failed\n", argv[i]);
-          return 1;
+          return EXIT_FAILURE;
         }
       size = filesize (fd);
 
@@ -32,7 +32,7 @@ main (int argc, char *argv[])
       if (map == MAP_FAILED) 
         {
           printf ("%s: mmap failed\n", argv[i]);
-          return 1;
+          return EXIT_FAILURE;
         }
 
       /* Write file to console. */
@@ -41,5 +41,5 @@ main (int argc, char *argv[])
       /* Unmap files (optional). */
       munmap (map);
     }
-  return 0;
+  return EXIT_SUCCESS;
 }
index c99aeb9db26bfdcbe3e859dd3867c436a290e029..6091dc88c12f897bfb10f769480fed0c6d5e85ef 100644 (file)
@@ -18,7 +18,7 @@ main (int argc, char *argv[])
   if (argc != 3) 
     {
       printf ("usage: cp OLD NEW\n");
-      return 1;
+      return EXIT_FAILURE;
     }
 
   /* Open input file. */
@@ -26,7 +26,7 @@ main (int argc, char *argv[])
   if (in_fd < 0) 
     {
       printf ("%s: open failed\n", argv[1]);
-      return 1;
+      return EXIT_FAILURE;
     }
   size = filesize (in_fd);
 
@@ -34,13 +34,13 @@ main (int argc, char *argv[])
   if (!create (argv[2], size)) 
     {
       printf ("%s: create failed\n", argv[2]);
-      return 1;
+      return EXIT_FAILURE;
     }
   out_fd = open (argv[2]);
   if (out_fd < 0) 
     {
       printf ("%s: open failed\n", argv[2]);
-      return 1;
+      return EXIT_FAILURE;
     }
 
   /* Map files. */
@@ -48,13 +48,13 @@ main (int argc, char *argv[])
   if (in_map == MAP_FAILED) 
     {
       printf ("%s: mmap failed\n", argv[1]);
-      return 1;
+      return EXIT_FAILURE;
     }
   out_map = mmap (out_fd, out_data);
   if (out_map == MAP_FAILED)
     {
       printf ("%s: mmap failed\n", argv[2]);
-      return 1;
+      return EXIT_FAILURE;
     }
 
   /* Copy files. */
@@ -64,5 +64,5 @@ main (int argc, char *argv[])
   munmap (in_map);
   munmap (out_map);
 
-  return 0;
+  return EXIT_SUCCESS;
 }
index ae6913c6ac2efda6f1bbdff7e02cf57b4e050630..7ddbc3f9d38e2d90d5895553a12a982da3966128 100644 (file)
@@ -8,11 +8,17 @@
 int
 main (int argc, char *argv[]) 
 {
-  if (argc != 2)
-    PANIC ("usage: %s DIRECTORY\n", argv[0]);
+  if (argc != 2) 
+    {
+      printf ("usage: %s DIRECTORY\n", argv[0]);
+      return EXIT_FAILURE;
+    }
 
-  if (!mkdir (argv[1]))
-    PANIC ("%s: mkdir failed\n", argv[1]);
-
-  return 0;
+  if (!mkdir (argv[1])) 
+    {
+      printf ("%s: mkdir failed\n", argv[1]);
+      return EXIT_FAILURE;
+    }
+  
+  return EXIT_SUCCESS;
 }
index b2441f5eede5c1db344d13e8e5d954f46550b5e3..d2305cfd5ba4c974fa39bfda983593f0c92bd234 100644 (file)
@@ -16,12 +16,12 @@ main (void)
   if (getcwd (cwd, sizeof cwd)) 
     {
       printf ("%s\n", cwd);
-      return 0; 
+      return EXIT_SUCCESS;
     }
   else 
     {
       printf ("error\n");
-      return 1
+      return EXIT_FAILURE
     }
 }
 \f
index 2f1ce730b735a48eafa440429ddb796fbe17aca8..0db7f7b2aedfa8e98a221d3c685f67ca393a18fc 100644 (file)
@@ -8,10 +8,14 @@
 int
 main (int argc, char *argv[]) 
 {
+  bool success = true;
   int i;
   
   for (i = 1; i < argc; i++)
-    if (!remove (argv[i]))
-      printf ("%s: remove failed\n", argv[i]);
-  return 0;
+    if (!remove (argv[i])) 
+      {
+        printf ("%s: remove failed\n", argv[i]);
+        success = false; 
+      }
+  return success ? EXIT_SUCCESS : EXIT_FAILURE;
 }
index 0aaafbb91c672454d139e498af792f4084e51feb..916d25267ac758a198fb4d299af7fa54edf5bfd4 100644 (file)
@@ -41,7 +41,7 @@ main (void)
     }
 
   printf ("Shell exiting.");
-  return 0;
+  return EXIT_SUCCESS;
 }
 
 /* Reads a line of input from the user into LINE, which has room
index d9487d3df7b73ad67872be69dae90697990095f3..8a9e0c013e91a74bb87b318b7f2f3f094c341bd6 100644 (file)
@@ -4,14 +4,22 @@
 #include <stdbool.h>
 #include <debug.h>
 
+/* Process identifier. */
 typedef int pid_t;
 #define PID_ERROR ((pid_t) -1)
 
+/* Map region identifier. */
 typedef int mapid_t;
 #define MAP_FAILED ((mapid_t) -1)
 
+/* Maximum characters in a filename written by readdir(). */
 #define READDIR_MAX_LEN 14
 
+/* Typical return values from main() and arguments to exit(). */
+#define EXIT_SUCCESS 0          /* Successful execution. */
+#define EXIT_FAILURE 1          /* Unsuccessful execution. */
+
+/* Projects 2 and later. */
 void halt (void) NO_RETURN;
 void exit (int status) NO_RETURN;
 pid_t exec (const char *file);
@@ -25,8 +33,12 @@ int write (int fd, const void *buffer, unsigned length);
 void seek (int fd, unsigned position);
 unsigned tell (int fd);
 void close (int fd);
+
+/* Project 3 and optionally project 4. */
 mapid_t mmap (int fd, void *addr);
 void munmap (mapid_t);
+
+/* Project 4 only. */
 bool chdir (const char *dir);
 bool mkdir (const char *dir);
 bool readdir (int fd, char name[READDIR_MAX_LEN + 1]);