Added and implemented Silc DIR API.
[runtime.git] / lib / silcutil / tests / test_silcdir.c
diff --git a/lib/silcutil/tests/test_silcdir.c b/lib/silcutil/tests/test_silcdir.c
new file mode 100644 (file)
index 0000000..e9e3694
--- /dev/null
@@ -0,0 +1,53 @@
+/* SilcDir tests */
+
+#include "silc.h"
+
+int main(int argc, char **argv)
+{
+  SilcBool success = FALSE;
+  SilcDir dir;
+  SilcDirEntry entry;
+  SilcDirEntryStat status;
+
+  if (argc > 1 && !strcmp(argv[1], "-d")) {
+    silc_log_debug(TRUE);
+    silc_log_quick(TRUE);
+    silc_log_debug_hexdump(TRUE);
+    silc_log_set_debug_string("*dir*,*errno*");
+  }
+
+  dir = silc_dir_open("/etc/");
+  if (!dir)
+    goto err;
+
+  printf("%s:\n", silc_dir_name(dir));
+  while ((entry = silc_dir_read(dir, &status)))
+    printf(
+     "%c%c%c%c%c%c%c%c%c%c %3d %4d %4d %8lu %04d-%02d-%02d %02d:%02d %s\n",
+       status->mode & SILC_DIR_ENTRY_IFDIR ? 'd' : '-',
+       status->mode & SILC_DIR_ENTRY_IRUSR ? 'r' : '-',
+       status->mode & SILC_DIR_ENTRY_IWUSR ? 'w' : '-',
+       status->mode & SILC_DIR_ENTRY_IXUSR ? 'x' : '-',
+       status->mode & SILC_DIR_ENTRY_IRGRP ? 'r' : '-',
+       status->mode & SILC_DIR_ENTRY_IWGRP ? 'w' : '-',
+       status->mode & SILC_DIR_ENTRY_IXGRP ? 'x' : '-',
+       status->mode & SILC_DIR_ENTRY_IROTH ? 'r' : '-',
+       status->mode & SILC_DIR_ENTRY_IWOTH ? 'w' : '-',
+       status->mode & SILC_DIR_ENTRY_IXOTH ? 'x' : '-',
+       status->nlink, status->uid, status->gid, status->size,
+       status->last_mod.year, status->last_mod.month, status->last_mod.day,
+       status->last_mod.hour, status->last_mod.minute,
+       silc_dir_entry_name(entry));
+
+  fflush(stdout);
+
+  silc_dir_close(dir);
+
+  success = TRUE;
+
+ err:
+  SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
+  fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");
+
+  return success;
+}