Make output verbosity configurable from the CLI and standardize options.
This commit is contained in:
parent
6bc8fa1a6a
commit
360b20d06f
@ -1,7 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# TROUBLESHOOTING
|
# TROUBLESHOOTING
|
||||||
# - To enable verbose algorithm/implementation debugging, use ./build -DDEBUG
|
|
||||||
# - If you see 'undefined reference to `AES_encrypt'',
|
# - If you see 'undefined reference to `AES_encrypt'',
|
||||||
# make sure you have openssl installed.
|
# make sure you have openssl installed.
|
||||||
# If libcrypto.a is in a non-standard directory, try ./build -L[your-lib-dir]
|
# If libcrypto.a is in a non-standard directory, try ./build -L[your-lib-dir]
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <bcrypt/ow-crypt.h>
|
#include <bcrypt/ow-crypt.h>
|
||||||
|
|
||||||
#include "mpw-algorithm.h"
|
#include "mpw-algorithm.h"
|
||||||
|
#include "mpw-util.h"
|
||||||
|
|
||||||
#define MP_N 32768
|
#define MP_N 32768
|
||||||
#define MP_r 8
|
#define MP_r 8
|
||||||
|
@ -13,8 +13,6 @@
|
|||||||
#include <histedit.h>
|
#include <histedit.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ftl(...) do { fprintf( stderr, __VA_ARGS__ ); exit(2); } while (0)
|
|
||||||
|
|
||||||
#include "mpw-algorithm.h"
|
#include "mpw-algorithm.h"
|
||||||
#include "mpw-util.h"
|
#include "mpw-util.h"
|
||||||
|
|
||||||
@ -25,9 +23,9 @@
|
|||||||
|
|
||||||
static void usage() {
|
static void usage() {
|
||||||
|
|
||||||
fprintf( stderr, "Usage: mpw [-u name] [-t type] [-c counter] [-V version] [-v variant] [-C context] [-h] site\n\n" );
|
fprintf( stderr, "Usage: mpw [-u name] [-t type] [-c counter] [-a algorithm] [-V variant] [-C context] [-v|-q] [-h] site\n\n" );
|
||||||
fprintf( stderr, " -u name Specify the full name of the user.\n"
|
fprintf( stderr, " -u name Specify the full name of the user.\n"
|
||||||
" Defaults to %s in env.\n\n", MP_env_fullname );
|
" Defaults to %s in env or prompts.\n\n", MP_env_fullname );
|
||||||
fprintf( stderr, " -t type Specify the password's template.\n"
|
fprintf( stderr, " -t type Specify the password's template.\n"
|
||||||
" Defaults to %s in env or 'long' for password, 'name' for login.\n"
|
" Defaults to %s in env or 'long' for password, 'name' for login.\n"
|
||||||
" x, max, maximum | 20 characters, contains symbols.\n"
|
" x, max, maximum | 20 characters, contains symbols.\n"
|
||||||
@ -40,23 +38,27 @@ static void usage() {
|
|||||||
" p, phrase | 20 character sentence.\n\n", MP_env_sitetype );
|
" p, phrase | 20 character sentence.\n\n", MP_env_sitetype );
|
||||||
fprintf( stderr, " -c counter The value of the counter.\n"
|
fprintf( stderr, " -c counter The value of the counter.\n"
|
||||||
" Defaults to %s in env or 1.\n\n", MP_env_sitecounter );
|
" Defaults to %s in env or 1.\n\n", MP_env_sitecounter );
|
||||||
fprintf( stderr, " -V version The algorithm version to use.\n"
|
fprintf( stderr, " -a version The algorithm version to use.\n"
|
||||||
" Defaults to %s in env or %d.\n\n", MP_env_algorithm, MPAlgorithmVersionCurrent );
|
" Defaults to %s in env or %d.\n\n", MP_env_algorithm, MPAlgorithmVersionCurrent );
|
||||||
fprintf( stderr, " -v variant The kind of content to generate.\n"
|
fprintf( stderr, " -V variant The kind of content to generate.\n"
|
||||||
" Defaults to 'password'.\n"
|
" Defaults to 'password'.\n"
|
||||||
" p, password | The password to log in with.\n"
|
" p, password | The password to log in with.\n"
|
||||||
" l, login | The username to log in as.\n"
|
" l, login | The username to log in as.\n"
|
||||||
" a, answer | The answer to a security question.\n\n" );
|
" a, answer | The answer to a security question.\n\n" );
|
||||||
fprintf( stderr, " -C context A variant-specific context.\n"
|
fprintf( stderr, " -C context A variant-specific context.\n"
|
||||||
" Defaults to empty.\n"
|
" Defaults to empty.\n"
|
||||||
" -v p, password | Doesn't currently use a context.\n"
|
" -V p, password | Doesn't currently use a context.\n"
|
||||||
" -v l, login | Doesn't currently use a context.\n"
|
" -V l, login | Doesn't currently use a context.\n"
|
||||||
" -v a, answer | Empty for a universal site answer or\n"
|
" -V a, answer | Empty for a universal site answer or\n"
|
||||||
" | the most significant word(s) of the question.\n\n" );
|
" | the most significant word(s) of the question.\n\n" );
|
||||||
|
fprintf( stderr, " -v Increase output verbosity (can be repeated).\n\n" );
|
||||||
|
fprintf( stderr, " -q Decrease output verbosity (can be repeated).\n\n" );
|
||||||
fprintf( stderr, " ENVIRONMENT\n\n"
|
fprintf( stderr, " ENVIRONMENT\n\n"
|
||||||
" MP_FULLNAME | The full name of the user.\n"
|
" %-14s | The full name of the user (see -u).\n"
|
||||||
" MP_SITETYPE | The default password template.\n"
|
" %-14s | The default password template (see -t).\n"
|
||||||
" MP_SITECOUNTER | The default counter value.\n\n" );
|
" %-14s | The default counter value (see -c).\n"
|
||||||
|
" %-14s | The default algorithm version (see -a).\n\n",
|
||||||
|
MP_env_fullname, MP_env_sitetype, MP_env_sitecounter, MP_env_algorithm );
|
||||||
exit( 0 );
|
exit( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,7 +113,7 @@ int main(int argc, char *const argv[]) {
|
|||||||
ftl( "Invalid %s: %s\n", MP_env_algorithm, algorithmVersionString );
|
ftl( "Invalid %s: %s\n", MP_env_algorithm, algorithmVersionString );
|
||||||
|
|
||||||
// Read the options.
|
// Read the options.
|
||||||
for (int opt; (opt = getopt( argc, argv, "u:P:t:c:v:V:C:h" )) != -1;)
|
for (int opt; (opt = getopt( argc, argv, "u:P:t:c:V:a:C:vqh" )) != -1;)
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'u':
|
case 'u':
|
||||||
fullName = optarg;
|
fullName = optarg;
|
||||||
@ -127,16 +129,22 @@ int main(int argc, char *const argv[]) {
|
|||||||
case 'c':
|
case 'c':
|
||||||
siteCounterString = optarg;
|
siteCounterString = optarg;
|
||||||
break;
|
break;
|
||||||
case 'v':
|
case 'V':
|
||||||
siteVariantString = optarg;
|
siteVariantString = optarg;
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case 'a':
|
||||||
if (sscanf( optarg, "%u", &algorithmVersion ) != 1)
|
if (sscanf( optarg, "%u", &algorithmVersion ) != 1)
|
||||||
ftl( "Not a version: %s\n", optarg );
|
ftl( "Not a version: %s\n", optarg );
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
siteContextString = optarg;
|
siteContextString = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'v':
|
||||||
|
++mpw_verbosity;
|
||||||
|
break;
|
||||||
|
case 'q':
|
||||||
|
--mpw_verbosity;
|
||||||
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
usage();
|
usage();
|
||||||
break;
|
break;
|
||||||
|
@ -6,21 +6,50 @@
|
|||||||
// Copyright (c) 2014 Lyndir. All rights reserved.
|
// Copyright (c) 2014 Lyndir. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
//// Logging.
|
//// Logging.
|
||||||
|
|
||||||
#ifdef DEBUG
|
int mpw_verbosity;
|
||||||
#ifndef trc
|
#ifndef trc
|
||||||
#define trc(...) fprintf( stderr, __VA_ARGS__ )
|
#define trc_level 3
|
||||||
#endif
|
#define trc(...) \
|
||||||
#else
|
if (mpw_verbosity >= 3) \
|
||||||
#ifndef trc
|
fprintf( stderr, __VA_ARGS__ )
|
||||||
#define trc(...) do {} while (0)
|
#endif
|
||||||
#endif
|
#ifndef dbg
|
||||||
|
#define dbg_level 2
|
||||||
|
#define dbg(...) \
|
||||||
|
if (mpw_verbosity >= 2) \
|
||||||
|
fprintf( stderr, __VA_ARGS__ )
|
||||||
|
#endif
|
||||||
|
#ifndef inf
|
||||||
|
#define inf_level 1
|
||||||
|
#define inf(...) \
|
||||||
|
if (mpw_verbosity >= 1) \
|
||||||
|
fprintf( stderr, __VA_ARGS__ )
|
||||||
|
#endif
|
||||||
|
#ifndef wrn
|
||||||
|
#define wrn_level 0
|
||||||
|
#define wrn(...) \
|
||||||
|
if (mpw_verbosity >= 0) \
|
||||||
|
fprintf( stderr, __VA_ARGS__ )
|
||||||
|
#endif
|
||||||
|
#ifndef err
|
||||||
|
#define err_level -1
|
||||||
|
#define err(...) \
|
||||||
|
if (mpw_verbosity >= -1) \
|
||||||
|
fprintf( stderr, __VA_ARGS__ )
|
||||||
#endif
|
#endif
|
||||||
#ifndef ftl
|
#ifndef ftl
|
||||||
#define ftl(...) do { fprintf( stderr, __VA_ARGS__ ); abort(); } while (0)
|
#define ftl_level -2
|
||||||
|
#define ftl(...) \
|
||||||
|
do { \
|
||||||
|
if (mpw_verbosity >= -2) \
|
||||||
|
fprintf( stderr, __VA_ARGS__ ); \
|
||||||
|
exit( 2 ); \
|
||||||
|
} while (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//// Buffers and memory.
|
//// Buffers and memory.
|
||||||
|
Loading…
Reference in New Issue
Block a user