diff --git a/src/internal/argv/argv.h b/src/internal/argv/argv.h
index 9bbb07f..8abf987 100644
--- a/src/internal/argv/argv.h
+++ b/src/internal/argv/argv.h
@@ -859,6 +859,7 @@ static void argv_usage(
 
 				while (*mark && (mark > desc)
 						&& (*mark != ' ')
+						&& (*mark != '|')
 						&& (*mark != '\t')
 						&& (*mark != '\n'))
 					mark--;
@@ -868,6 +869,9 @@ static void argv_usage(
 						? cap : desc + desclen;
 					cache = *mark;
 					*mark = 0;
+				} else if (*mark == '|') {
+					cache = *mark;
+					*mark = 0;
 				} else {
 					cache = 0;
 					*mark = 0;
@@ -877,7 +881,11 @@ static void argv_usage(
 				if (desc == description)
 					fprintf(stdout,"%s%s\n",optstr,desc);
 				else
-					fprintf(stdout,"%-*c %s\n",(int)optlen,' ',desc);
+					fprintf(stdout,"%-*c %s\n",
+						(*desc == '|')
+							? (int)(optlen+1)
+							: (int)optlen,
+						' ',desc);
 
 				if (cache)
 					*mark = cache;