]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Add directory test application 'manual-dir-iter' to cmake and autotools build system.
authorRalf Habacker <ralf.habacker@freenet.de>
Mon, 8 Sep 2014 13:15:55 +0000 (13:15 +0000)
committerRalf Habacker <ralf.habacker@freenet.de>
Mon, 8 Sep 2014 14:33:37 +0000 (14:33 +0000)
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=57272
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
cmake/test/CMakeLists.txt
test/Makefile.am
test/manual-dir-iter.c [new file with mode: 0644]

index 28bb84c115fc0d1e7de07da4e6ce8565594a41a4..13f639b1bb7fab04fc1363effa9142b346ee997e 100644 (file)
@@ -13,6 +13,10 @@ target_link_libraries(dbus-testutils ${DBUS_INTERNAL_LIBRARIES})
 
 add_subdirectory( name-test )
 
+set (manual-dir-iter_SOURCES
+    ${CMAKE_SOURCE_DIR}/../test/manual-dir-iter.c
+)
+
 set (test-service_SOURCES
     ${CMAKE_SOURCE_DIR}/../test/test-service.c
 )
@@ -49,6 +53,7 @@ set (test-sleep-forever_SOURCES
     ${CMAKE_SOURCE_DIR}/../test/test-sleep-forever.c
 )
 
+add_helper_executable(manual-dir-iter ${manual-dir-iter_SOURCES} ${DBUS_INTERNAL_LIBRARIES})
 add_helper_executable(test-service ${test-service_SOURCES} dbus-testutils)
 add_helper_executable(test-names ${test-names_SOURCES} dbus-testutils)
 add_test_executable(test-shell ${test-shell_SOURCES} ${DBUS_INTERNAL_LIBRARIES})
index cec5cdabd49a7828a543005a0c8ad2adc5d91b9b..5d4701da6bc052fe426c298a3dde1e47232c235f 100644 (file)
@@ -119,6 +119,10 @@ test_syslog_SOURCES = internals/syslog.c
 test_syslog_CPPFLAGS = $(static_cppflags)
 test_syslog_LDADD = libdbus-testutils-internal.la $(GLIB_LIBS)
 
+manual_dir_iter_SOURCES = manual-dir-iter.c
+manual_dir_iter_CPPFLAGS = $(static_cppflags)
+manual_dir_iter_LDADD = $(top_builddir)/dbus/libdbus-internal.la
+
 EXTRA_DIST = dbus-test-runner
 
 testexecdir = $(libdir)/dbus-1.0/test
@@ -130,6 +134,7 @@ installable_tests = \
        test-printf \
        $(NULL)
 installable_manual_tests = \
+       manual-dir-iter \
        $(NULL)
 
 if DBUS_WITH_GLIB
diff --git a/test/manual-dir-iter.c b/test/manual-dir-iter.c
new file mode 100644 (file)
index 0000000..21ac0e9
--- /dev/null
@@ -0,0 +1,92 @@
+#include <config.h>
+#include "test-utils.h"
+
+#include "dbus/dbus-macros.h"
+#include "dbus/dbus-sysdeps.h"
+
+static void oom (const char *doing) _DBUS_GNUC_NORETURN;
+static void die (const char *message) _DBUS_GNUC_NORETURN;
+
+void
+oom (const char *doing)
+{
+  fprintf (stderr, "*** manual-dir-iter: OOM while %s\n", doing);
+  exit (1);
+}
+
+void
+die (const char *message)
+{
+  fprintf (stderr, "*** manual-dir-iter: %s\n", message);
+  exit (1);
+}
+
+static void
+debug (const char *message)
+{
+  fprintf (stdout, "+++ manual-dir-iter: %s\n", message);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+  DBusString filename;
+  DBusString dirname;
+  DBusError tmp_error;
+  DBusDirIter *dir;
+
+  if (argc != 2)
+      die ("syntax: manual-dir-iter <path>");
+
+  dbus_error_init (&tmp_error);
+
+  if (!_dbus_string_init (&filename))
+      oom ("init filename");
+
+  if (!_dbus_string_init (&dirname))
+      oom ("init dirname");
+
+  _dbus_string_append (&dirname, argv[1]);
+  dir = _dbus_directory_open (&dirname, &tmp_error);
+
+  if (dir == NULL)
+    {
+      fprintf (stderr, "could not open directory: %s: %s\n",
+               tmp_error.name, tmp_error.message);
+      exit(1);
+    }
+
+  while (_dbus_directory_get_next_file (dir, &filename, &tmp_error))
+    {
+      DBusString full_path;
+      if (!_dbus_string_init (&full_path))
+        {
+          oom ("init full_path");
+        }
+
+      if (!_dbus_string_copy (&dirname, 0, &full_path, 0))
+        {
+          oom ("copying full_path to dirname");
+        }
+
+      if (!_dbus_concat_dir_and_file (&full_path, &filename))
+        {
+          oom ("concat full_path");
+        }
+      debug (_dbus_string_get_const_data (&filename));
+      _dbus_string_free (&full_path);
+    }
+
+  if (dbus_error_is_set (&tmp_error))
+      die (tmp_error.message);
+
+  _dbus_string_free (&filename);
+
+  if (dir)
+    _dbus_directory_close (dir);
+
+  _dbus_verbose ("*** Test dir name exiting\n");
+
+  return 0;
+}