diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2020-01-07 09:37:06 +1300 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2020-01-07 09:37:37 +1300 |
commit | 61200ea6fe6e6df53479148801276e18cf4e9cd7 (patch) | |
tree | fd20769cfb332dbd8ae1d23a7f9a74414a361e15 | |
parent | Rename to README.md (diff) | |
download | crypt-61200ea6fe6e6df53479148801276e18cf4e9cd7.tar.gz crypt-61200ea6fe6e6df53479148801276e18cf4e9cd7.zip |
Refactor usage function and output
-rw-r--r-- | crypt.c | 37 | ||||
-rw-r--r-- | crypt.h | 3 |
2 files changed, 19 insertions, 21 deletions
@@ -8,38 +8,37 @@ int main (int argc, char **argv) /* The hash we will produce, hopefully */ char *hash = NULL; - /* Assume user doesn't want help */ - int help = 0; + /* Option character */ + int opt; /* Iterate through any options */ - int o; - while ((o = getopt(argc, argv, OPTSTRING)) != -1) { - switch (o) { + while ((opt = getopt(argc, argv, "h")) != -1) { + switch (opt) { case 'h': - help = 1; + usage(stdout, EXIT_SUCCESS); break; case '?': - fprintf(stderr, "Unknown option\n"); + usage(stderr, EXIT_FAILURE); break; default: abort(); } } - /* If help was asked, give it */ - if (help) { - fprintf(stdout, "%s\n", USAGE); - exit(EXIT_SUCCESS); - } - - /* If we don't have three arguments, bail */ - if (argc != 3) { - fprintf(stderr, "%s\n", USAGE); - exit(EXIT_FAILURE); - } + /* If we don't have three arguments left now, bail */ + if (argc != 3) + usage(stderr, EXIT_FAILURE); /* All seems well, build the hash and print it */ hash = crypt(argv[1], argv[2]); - fprintf(stdout, "%s\n", hash); + puts(hash); exit(EXIT_SUCCESS); } + +/* + * Show usage to given stream, and exit with given code + */ +void usage(FILE *stream, int status) { + fputs("USAGE: crypt [-h | KEY SALT]\n", stream); + exit(status); +} @@ -4,5 +4,4 @@ #include <stdlib.h> #include <unistd.h> -#define OPTSTRING "h" -#define USAGE "USAGE: crypt KEY SALT" +void usage(FILE *, int); |