3 Lists the contents of the directory or directories named on
4 the command line, or of the current directory if none are
7 By default, only the name of each file is printed. If "-l" is
8 given as the first argument, the type and size of each file is
16 list_dir (const char *dir, bool verbose)
18 int dir_fd = open (dir);
21 printf ("%s: not found\n", dir);
27 char name[READDIR_MAX_LEN];
28 printf ("%s:\n", dir);
29 while (readdir (dir_fd, name))
37 if (strcmp (dir, "."))
38 snprintf (full_name, sizeof full_name, "%s/%s", dir, name);
41 /* This is a special case for implementations
42 that don't fully understand . and .. */
43 strlcpy (full_name, name, sizeof full_name);
45 entry_fd = open (full_name);
53 printf ("%d-byte file", filesize (entry_fd));
56 printf ("open failed");
63 printf ("%s: not a directory\n", dir);
68 main (int argc, char *argv[])
71 if (argc > 1 && !strcmp (argv[1], "-l"))
79 list_dir (".", verbose);
83 for (i = 1; i < argc; i++)
84 list_dir (argv[i], verbose);