summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Makefile8
-rw-r--r--test/test.c102
2 files changed, 110 insertions, 0 deletions
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 0000000..7fe7cbf
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,8 @@
+CFLAGS += -std=gnu99 -ggdb
+LDFLAGS =
+
+all: test
+
+.PHONY: clean
+clean:
+ rm -f -- *.o test
diff --git a/test/test.c b/test/test.c
new file mode 100644
index 0000000..b3012d7
--- /dev/null
+++ b/test/test.c
@@ -0,0 +1,102 @@
+#define _GNU_SOURCE
+#include <errno.h>
+#include <error.h>
+#include <fcntl.h>
+#include <hurd.h>
+#include <mach.h>
+#include <stdio.h>
+
+void
+dosth (void)
+{
+ mach_port_t foo;
+ mach_port_t bar = MACH_PORT_DEAD;
+
+ foo = file_name_lookup ("/dev", O_NOTRANS, 0);
+ if (! MACH_PORT_VALID (foo))
+ error (1, errno, "file_name_lookup");
+
+ fprintf (stderr, "dosth looked up %d\n", foo);
+}
+
+void
+donothing (mach_port_t *p)
+{
+}
+
+void
+dosthelse (mach_port_t *p)
+{
+ *p = file_name_lookup ("/bin", O_NOTRANS, 0);
+ if (! MACH_PORT_VALID (*p))
+ error (1, errno, "file_name_lookup");
+
+ fprintf (stderr, "dosthelse looked up %d\n", *p);
+ donothing (p);
+}
+
+mach_port_t some_port;
+mach_port_t some_other_port;
+
+void
+dosthglobal (void)
+{
+ some_port = file_name_lookup ("/sbin", O_NOTRANS, 0);
+ if (! MACH_PORT_VALID (some_port))
+ error (1, errno, "file_name_lookup");
+
+ fprintf (stderr, "dosthglobal looked up %d\n", some_port);
+
+ some_other_port = some_port;
+ some_port = MACH_PORT_NULL;
+}
+
+void
+doleakreceive (void)
+{
+ mach_port_t foo;
+ error_t err = mach_port_allocate (mach_task_self (),
+ MACH_PORT_RIGHT_RECEIVE,
+ &foo);
+ if (err)
+ error (1, errno, "mach_port_allocate");
+
+ fprintf (stderr, "allocated receive port %d\n", foo);
+}
+
+void
+dolookupcwd (void)
+{
+ mach_port_t foo;
+ foo = getcwdir ();
+ if (! MACH_PORT_VALID (foo))
+ error (1, errno, "file_name_lookup");
+
+ fprintf (stderr, "dolookupcwd looked up %d\n", foo);
+}
+
+void
+gopinniped (void)
+{
+ mach_port_deallocate (mach_task_self (), 12345);
+ mach_port_destroy (mach_task_self (), 54321);
+}
+
+int
+main ()
+{
+ dosth ();
+
+ mach_port_t *p = malloc (sizeof *p);
+ dosthelse (p);
+ free (p);
+
+ dosthglobal ();
+ some_other_port = MACH_PORT_NULL;
+
+ doleakreceive ();
+ dolookupcwd ();
+ gopinniped ();
+
+ return 0;
+}