MINOR: halog: add some help on the command line
diff --git a/contrib/halog/halog.c b/contrib/halog/halog.c
index 40852ae..250623d 100644
--- a/contrib/halog/halog.c
+++ b/contrib/halog/halog.c
@@ -123,19 +123,58 @@
 void filter_output_line(const char *accept_field, const char *time_field, struct timer **tptr);
 void filter_accept_holes(const char *accept_field, const char *time_field, struct timer **tptr);
 
-void die(const char *msg)
+void usage(FILE *output, const char *msg)
 {
-	fprintf(stderr,
+	fprintf(output,
 		"%s"
-		"Usage: halog [-q] [-c] [-v] {-gt|-pct|-st|-tc|-srv|-u|-uc|-ue|-ua|-ut|-uao|-uto}\n"
+		"Usage: halog [-h|--help] for long help\n"
+		"       halog [-q] [-c] [-v] {-gt|-pct|-st|-tc|-srv|-u|-uc|-ue|-ua|-ut|-uao|-uto}\n"
 		"       [-s <skip>] [-e|-E] [-H] [-rt|-RT <time>] [-ad <delay>] [-ac <count>]\n"
 		"       [-Q|-QS] [-tcn|-TCN <termcode>] [ -hs|-HS [min][:[max]] ] < log\n"
 		"\n",
 		msg ? msg : ""
 		);
+}
+
+void die(const char *msg)
+{
+	usage(stderr, msg);
 	exit(1);
 }
 
+void help()
+{
+	usage(stdout, NULL);
+	printf(
+	       "Input filters (several filters may be combined) :\n"
+	       " -H                      only match lines containing HTTP logs (ignore TCP)\n"
+	       " -E                      only match lines without any error (no 5xx status)\n"
+	       " -e                      only match lines with errors (status 5xx or negative)\n"
+	       " -rt|-RT <time>          only match response times larger|smaller than <time>\n"
+	       " -Q|-QS                  only match queued requests (any queue|server queue)\n"
+	       " -tcn|-TCN <code>        only match requests with/without termination code <code>\n"
+	       " -hs|-HS <[min][:][max]> only match requests with HTTP status codes within/not\n"
+	       "                         within min..max. Any of them may be omitted. Exact\n"
+	       "                         code is checked for if no ':' is specified.\n"
+	       "Modifiers\n"
+	       " -v                      invert the input filtering condition\n"
+	       " -q                      don't report errors/warnings\n"
+	       "\n"
+	       "Output filters - only one may be used at a time\n"
+	       " -c    only report the number of lines that would have been printed\n"
+	       " -pct  output connect and response times percentiles\n"
+	       " -st   output number of requests per HTTP status code\n"
+	       " -tc   output number of requests per termination code (2 chars)\n"
+	       " -srv  output statistics per server (time, requests, errors)\n"
+	       " -u*   output statistics per URL (time, requests, errors)\n"
+	       "       Additional characters indicate the output sorting key :\n"
+	       "       -u : by URL, -uc : request count, -ue : error count\n"
+	       "       -ua : average response time, -uto : average total time\n"
+	       "       -uao, -uto: average times computed on valid ('OK') requests\n"
+	       );
+	exit(0);
+}
+
 
 /* return pointer to first char not part of current field starting at <p>. */
 
@@ -600,6 +639,8 @@
 				die("Fatal: missing output file name.\n");
 			output_file = argv[1];
 		}
+		else if (strcmp(argv[0], "-h") == 0 || strcmp(argv[0], "--help") == 0)
+			help();
 		argc--;
 		argv++;
 	}