From 352783dd9f520bf49986d403ea24861d0da85302 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sat, 5 Apr 2014 10:52:07 +0100 Subject: [PATCH] progs/mkphrase.[c1]: Optionally drop apostrophes. They don't do much good, really. --- progs/mkphrase.1 | 9 +++++++-- progs/mkphrase.c | 10 ++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/progs/mkphrase.1 b/progs/mkphrase.1 index a40b18d4..e98a178b 100644 --- a/progs/mkphrase.1 +++ b/progs/mkphrase.1 @@ -33,7 +33,7 @@ mkphrase \- generate passphrases with guaranteed minimum entropy .SH SYNOPSIS .B mkphrase -.RB [ \-p ] +.RB [ \-Ap ] .RB [ \-b .IR bits ] .RB [ \-g @@ -56,7 +56,9 @@ something like .BR /usr/share/dict/words , though you can use anything you want. Wordlist files are expected to contain whitespace-separated words. Letters are smashed to lowercase; -apostrophes are retained; other funny characters are ignored. +apostrophes are retained (unless the +.B \-A +option is set); other funny characters are dropped. .PP Options provided are: .TP @@ -75,6 +77,9 @@ Write a really brief usage summary for .B mkphrase to standard output and exit. .TP +.BI "\-A, \-\-no-apostrophe" +Don't treat apostrophe as a word character. +.TP .BI "\-b, \-\-bits=" bits Set the minimum entropy for acceptable phrases. The default is 128 bits. This might increase in future. diff --git a/progs/mkphrase.c b/progs/mkphrase.c index 17fcb9cf..b84d850b 100644 --- a/progs/mkphrase.c +++ b/progs/mkphrase.c @@ -55,7 +55,9 @@ static unsigned min = 0, max = 256; /* Word length bounds */ static unsigned minbits = 128, maxbits = UINT_MAX; /* Acceptable entropy */ static unsigned count = 1; /* How many passphrases to make */ -static const char wchars[] = "abcdefghijklmnopqrstuvwxyz'"; +static const char + all_wchars[] = "'abcdefghijklmnopqrstuvwxyz", + *wchars = all_wchars; typedef struct ppgen_ops { const char *name; /* Name of the generator */ @@ -320,6 +322,7 @@ int main(int argc, char *argv[]) { "help", 0, 0, 'h' }, { "version", 0, 0, 'v' }, { "usage", 0, 0, 'u' }, + { "no-apostrophe", 0, 0, 'A' }, { "bits", OPTF_ARGREQ, 0, 'b' }, { "generator", OPTF_ARGREQ, 0, 'g' }, { "count", OPTF_ARGREQ, 0, 'n' }, @@ -327,7 +330,7 @@ int main(int argc, char *argv[]) { "range", OPTF_ARGREQ, 0, 'r' }, { 0, 0, 0, 0 } }; - int i = mdwopt(argc, argv, "hvu b:g:n:pr:", opts, 0, 0, 0); + int i = mdwopt(argc, argv, "hvu Ab:g:n:pr:", opts, 0, 0, 0); if (i < 0) break; @@ -341,6 +344,9 @@ int main(int argc, char *argv[]) case 'u': usage(stdout); exit(0); + case 'A': + wchars = all_wchars + 1; + break; case 'b': { char *p; minbits = strtoul(optarg, &p, 0); -- 2.11.0