diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2021-11-03 19:14:19 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2021-11-03 19:14:19 -0400 |
commit | 936dcbc7b1a23ec8a2a825af0307b5db95e3e6d0 (patch) | |
tree | e1773e794e9f56709f3152fa9470b9552545e902 /main.c | |
parent | ce48be18ff6d36326521cfb28eea203c562f391c (diff) | |
download | jdtalkc-936dcbc7b1a23ec8a2a825af0307b5db95e3e6d0.tar.gz |
Add usage statement and title case converter
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 48 |
1 files changed, 46 insertions, 2 deletions
@@ -1,5 +1,38 @@ #include "jdtalk.h" +static const char *usage_text = \ + "usage: %s [-h] [-befHlr] [-s salad_word_count] [-c line_limit] [-p pattern] [-a acronym]\n" + " -a str Acronym mode\n" + " -b Enable benchmark output\n" + " -c num Output `num` lines\n" + " -e Exact match (use with -p)\n" + " -f str Custom output format\n" + " (a=adjective, d=adverb, n=noun, v=verb)\n" + " -h Show this usage statement\n" + " -H Produce hill-cased strings (hIlL cAsE)\n" + " -l Produce leet speak strings (1337 5|*34|<)\n" + " -r Produce random-case strings (raNdoM CasE)\n" + " -s num Produce word salad (`num` words per line)\n" + " -t Produce title-case strings (Title Case)\n" + "\n"; + +static void usage(char *name) { + char *begin; + char buf[PATH_MAX]; + buf[0] = '\0'; + + strcpy(buf, name); + begin = strrchr(buf, '/'); + if (begin && strlen(begin)) { + printf("%s\n", begin); + memmove(begin, begin + 1, strlen(begin)); + printf("%s\n", begin); + } else { + begin = buf; + } + printf(usage_text, begin); +} + int main(int argc, char *argv[]) { struct Dictionary *dict; char buf[OUTPUT_SIZE_MAX]; @@ -16,6 +49,7 @@ int main(int argc, char *argv[]) { int do_leet; int do_salad; int do_benchmark; + int do_title_case; int salad_limit; size_t limit; float start_time; @@ -30,6 +64,7 @@ int main(int argc, char *argv[]) { do_leet = 0; do_salad = 0; do_benchmark = 0; + do_title_case = 0; limit = 0; salad_limit = 10; @@ -41,7 +76,11 @@ int main(int argc, char *argv[]) { srand(time(NULL)); setvbuf(stdout, NULL, _IONBF, 0); - for (size_t i = 0; argv[i] != NULL; i++) { + for (int i = 1; i < argc; i++) { + if (strcmp(argv[i], "-h") == 0) { + usage(argv[0]); + exit(0); + } if (strcmp(argv[i], "-b") == 0) { do_benchmark = 1; } @@ -50,7 +89,6 @@ int main(int argc, char *argv[]) { } if (strcmp(argv[i], "-p") == 0) { do_pattern = 1; - memset(pattern, '\0', sizeof(pattern)); strcpy(pattern, argv[i + 1]); } if (strcmp(argv[i], "-e") == 0) { @@ -74,8 +112,12 @@ int main(int argc, char *argv[]) { } if (strcmp(argv[i], "-a") == 0) { do_acronym = 1; + do_title_case = 1; strcpy(acronym, argv[i + 1]); } + if (strcmp(argv[i], "-t") == 0) { + do_title_case = 1; + } } dict = dictionary_populate(); @@ -131,6 +173,8 @@ int main(int argc, char *argv[]) { str_hill_case(buf); } else if (do_leet) { strcpy(buf, str_leet(buf)); + } else if (do_title_case) { + str_title_case(buf); } puts(buf); |