summary refs log tree commit diff
diff options
context:
space:
mode:
authorLeah Neukirchen <leah@vuxu.org>2020-05-07 22:42:27 +0200
committerLeah Neukirchen <leah@vuxu.org>2020-05-07 22:42:27 +0200
commit34ef169c88542f3ad3908925f7ce7f0fd8b2ed74 (patch)
tree100d6a72d34cc05b0f3194841e77203c07dd562d
parent47f7cdd0d250421de68ebae1b7b1d989100b2bba (diff)
downloadhittpd-34ef169c88542f3ad3908925f7ce7f0fd8b2ed74.tar.gz
hittpd-34ef169c88542f3ad3908925f7ce7f0fd8b2ed74.tar.xz
hittpd-34ef169c88542f3ad3908925f7ce7f0fd8b2ed74.zip
argument parsing
-rw-r--r--hittpd.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/hittpd.c b/hittpd.c
index f0cff7a..01144f2 100644
--- a/hittpd.c
+++ b/hittpd.c
@@ -84,6 +84,7 @@ char default_vhost[] = "_default";
 
 int tilde = 0;
 int vhost = 0;
+int quiet = 0;
 
 static int
 on_url(http_parser *p, const char *s, size_t l)
@@ -195,6 +196,9 @@ peername(http_parser *p)
 void
 accesslog(http_parser *p, int status)
 {
+	if (quiet)
+		return;
+
 	struct conn_data *data = p->data;
 
 	char buf[64];
@@ -430,7 +434,6 @@ mimetype(char *ext)
 static int
 on_message_complete(http_parser *p) {
 	struct conn_data *data = p->data;
-	printf("complete. host: %s path: %s\n", data->host, data->path);
 
 	data->state = SENDING;
 
@@ -826,8 +829,26 @@ read_client(int i)
 }
 
 int
-main()
+main(int argc, char *argv[])
 {
+	int port = 80;
+	char *host = 0;
+
+	int c;
+        while ((c = getopt(argc, argv, "h:p:qHV")) != -1)
+		switch (c) {
+		case 'h': host = optarg; break;
+		case 'p': port = atoi(optarg); break;
+		case 'q': quiet = 1; break;
+		case 'H': tilde = 1; break;
+		case 'V': vhost = 1; break;
+                default:
+                        fprintf(stderr,
+			    "Usage: %s [-h HOST] [-p PORT] "
+			    "[-HVq] [DIRECTORY]\n", argv[0]);
+                        exit(1);
+		}
+
 	int i, maxi, listenfd, sockfd;
 	int nready;
 	int r = 0;
@@ -849,7 +870,7 @@ main()
 	}
 
 	servaddr.sin6_family = AF_INET6;
-	servaddr.sin6_port = htons(8081);
+	servaddr.sin6_port = htons(port);
 	servaddr.sin6_addr = in6addr_any;
 
 	r = bind(listenfd, (struct sockaddr *)&servaddr, sizeof servaddr);