From 602b64263ac7390c6c3eabf008a092cb5ca37983 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Wed, 21 Oct 2020 13:17:01 +0000
Subject: [PATCH] Added README and help to program

---
 README.org |   32 ++++++++++++++++++++++++++++++++
 main.c     |   13 ++++++++++---
 2 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/README.org b/README.org
new file mode 100644
index 0000000..c783c11
--- /dev/null
+++ b/README.org
@@ -0,0 +1,32 @@
+#+TITLE: DNScomp, a basic DNS benchmark tool
+
+* What is this and why did you make it?
+This is a basic DNS bench-marking tool, written to be as portable as possible.
+As such I have tried to include only POSIX functions.
+It runs the tests in parallel to try and save some time, and has a rudimentary progress meter for signs of life.
+It is by no means perfect, but it is mostly functional. Nonetheless, feel free to try and improve it.
+
+As to why I made it, I couldn't find a DNS benchmarking tool.
+There were some online, which for obvious reasons are useless for local testing, and the others were fairly old and/or platform specific.
+Namebench was in the process of a rewrite and also was written in go.
+This is written in C to try and make is as approachable as possible.
+
+It was developed mostly on Linux and Mac, although it has been tested to work on Windows as well.
+
+* Usage
+There is a preloaded list of 20 DNS servers and 50 hostnames to try out.
+By default, all 50 will be tested.
+You can add your own DNS servers with the ~-s~ argument and hosts to check with ~-a~.
+If you want to test less hostnames, you can do so by specifying the number to test with ~-t~.
+The number of times to test each hostname is defaulted to 10, but can be specified with ~-n~.
+Added DNS servers and hosts are the first to be used.
+
+While running, a counter will show a completion percentage, although this may undercount due to the parallel nature of the program.
+Additionally progress will slow towards the end as the last servers are left to complete.
+Once testing has been completed, a list of DNS servers will be printed out from fastest to slowest, with the average response time next to them.
+
+* Things still to do
+- Clean up the code and make it more readable and nicer
+- Optimise a little
+- Add more hostnames and DNS servers
+- Allow piping of hosts and/or servers
diff --git a/main.c b/main.c
index 5fb4cf2..edcc99d 100644
--- a/main.c
+++ b/main.c
@@ -30,13 +30,13 @@
 int main(int argc, char** argv)
 {
 	int option, added_hosts = 0;
-	while((option = getopt(argc, argv, "s:h:t:n:")) != -1) {
+	while((option = getopt(argc, argv, "s:a:t:n:h")) != -1) {
 		switch (option) {
 		case 's': //server to use
 			add_dns_server(&servers, optarg);
 			num_servers++;
 			break;
-		case 'h': //hostname to search
+		case 'a': //hostname to search
 			add_hosts_server(&hosts, optarg);
 			added_hosts++;
 			break;
@@ -47,8 +47,15 @@
 			num_tests = atoi(optarg);
 			break;
 		case '?':
+		case 'h':
 		default:
-			printf("Error: invalid option -%c\n", optopt);
+			printf("Usage: %s [options]\n", argv[0]);
+			printf("Options:\n");
+			printf("\t-s <server>\tadd a DNS server to be tested\n");
+			printf("\t-a <hostname>\tadd a hostname to be tested\n");
+			printf("\t-t <number>\tspecify the number of hostnames to be tested, capped at 50 + number manually added\n\t\t\tdefaults to test all available\n");
+			printf("\t-n <number>\tspecify the number of tests to perform on each hostname\n\t\t\tdefaults to 10\n");
+			printf("\t-h\t\tShow this help\n");
 			free_dns_list(&servers);
 			free_hosts_list(&hosts);
 			exit(1);

--
Gitblit v1.10.0