clar: give the caller a chance to clean up when listing suites
diff --git a/tests/clar.c b/tests/clar.c
index 2caa871..d8cd8c3 100644
--- a/tests/clar.c
+++ b/tests/clar.c
@@ -308,7 +308,7 @@
 	exit(-1);
 }
 
-static void
+static int
 clar_parse_args(int argc, char **argv)
 {
 	int i;
@@ -377,7 +377,7 @@
 			for (j = 0; j < _clar_suite_count; ++j)
 				printf(" %3d: %s\n", (int)j, _clar_suites[j].name);
 
-			exit(0);
+			return 1;
 		}
 
 		case 'v':
@@ -388,6 +388,8 @@
 			clar_usage(argv[0]);
 		}
 	}
+
+	return 0;
 }
 
 void
@@ -411,8 +413,13 @@
 int
 clar_test_run()
 {
+	int should_exit;
+
 	if (_clar.argc > 1)
-		clar_parse_args(_clar.argc, _clar.argv);
+		should_exit = clar_parse_args(_clar.argc, _clar.argv);
+
+	if (should_exit)
+		return 0;
 
 	if (!_clar.suites_ran) {
 		size_t i;