summaryrefslogtreecommitdiffstats
path: root/converter/source/printdir.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--converter/source/printdir.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/converter/source/printdir.c b/converter/source/printdir.c
new file mode 100644
index 000000000..ad0492f98
--- /dev/null
+++ b/converter/source/printdir.c
@@ -0,0 +1,52 @@
+/* list contents of a directory */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include "dirent.h"
+
+int main (int argc, char *argv[]) {
+ int i;
+
+ /* check command line arguments */
+ if (argc <= 1) {
+ fprintf (stderr, "usage: printdir directory\n");
+ return EXIT_FAILURE;
+ }
+
+ /* print contents of directories listed in command line */
+ i = 1;
+ while (i < argc) {
+ DIR *dir;
+ struct dirent *ent;
+
+ /* open directory stream */
+ dir = opendir (argv[i]);
+ if (dir != NULL) {
+
+ /* print all the files and directories within directory */
+ while ((ent = readdir (dir)) != NULL) {
+ switch (ent->d_type) {
+ case DT_REG:
+ printf ("%*.*s\n", ent->d_namlen, ent->d_namlen, ent->d_name);
+ break;
+
+ case DT_DIR:
+ printf ("%s (dir)\n", ent->d_name);
+ break;
+
+ default:
+ printf ("%s:\n", ent->d_name);
+ }
+ }
+
+ closedir (dir);
+ } else {
+ /* could not open directory */
+ perror ("");
+ return EXIT_FAILURE;
+ }
+ i++;
+ }
+ return EXIT_SUCCESS;
+}