summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRalf Habacker <ralf.habacker@freenet.de>2014-09-08 13:15:55 +0000
committerRalf Habacker <ralf.habacker@freenet.de>2014-09-08 14:33:37 +0000
commit89c6173706e9ab09dafc1f44afd9f30a8559222b (patch)
tree535dc93c3aee6d625655219e2bb6d67969957954 /test
parent0cde94ecd96da47a1062a5585a897d81c3d6279c (diff)
downloaddbus-89c6173706e9ab09dafc1f44afd9f30a8559222b.tar.gz
Add directory test application 'manual-dir-iter' to cmake and autotools build system.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=57272 Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.am5
-rw-r--r--test/manual-dir-iter.c92
2 files changed, 97 insertions, 0 deletions
diff --git a/test/Makefile.am b/test/Makefile.am
index cec5cdab..5d4701da 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -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
index 00000000..21ac0e95
--- /dev/null
+++ b/test/manual-dir-iter.c
@@ -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;
+}