]> git.sesse.net Git - plocate/blobdiff - plocate.cpp
Write new --help text from scratch, so that we have nothing from mlocate except some...
[plocate] / plocate.cpp
index c4011c9888b3b0f86c12132b0207dcd951332aa1..5b9db1807b6d1862b4520eddd961677103e782ff 100644 (file)
@@ -1,6 +1,7 @@
 #include "db.h"
 #include "io_uring_engine.h"
 #include "parse_trigrams.h"
+#include "turbopfor.h"
 #include "unique_sort.h"
 
 #include <algorithm>
@@ -39,9 +40,9 @@ using namespace std::chrono;
                } \
        } while (false)
 
-#include "turbopfor.h"
+#define DEFAULT_DBPATH "/var/lib/mlocate/plocate.db"
 
-const char *dbpath = "/var/lib/mlocate/plocate.db";
+const char *dbpath = DEFAULT_DBPATH;
 bool ignore_case = false;
 bool only_count = false;
 bool print_nul = false;
@@ -574,16 +575,27 @@ string unescape_glob_to_plain_string(const string &needle)
 
 void usage()
 {
-       // The help text comes from mlocate.
-       printf("Usage: plocate [OPTION]... PATTERN...\n");
-       printf("\n");
-       printf("  -c, --count            only print number of found entries\n");
-       printf("  -d, --database DBPATH  use DBPATH instead of default database (which is\n");
-       printf("                         %s)\n", dbpath);
-       printf("  -h, --help             print this help\n");
-       printf("  -i, --ignore-case      ignore case distinctions when matching patterns\n");
-       printf("  -l, --limit, -n LIMIT  limit output (or counting) to LIMIT entries\n");
-       printf("  -0, --null             separate entries with NUL on output\n");
+       printf(
+               "Usage: plocate [OPTION]... PATTERN...\n"
+               "\n"
+               "  -c, --count            print number of matches instead of the matches\n"
+               "  -d, --database DBPATH  search for files in DBPATH\n"
+               "                         (default is " DEFAULT_DBPATH ")\n"
+               "  -i, --ignore-case      search case-insensitively\n"
+               "  -l, --limit LIMIT      stop after LIMIT matches\n"
+               "  -0, --null             delimit matches by NUL instead of newline\n"
+               "      --help             print this help\n"
+               "      --version          print version information\n");
+}
+
+void version()
+{
+       printf("plocate %s\n", PLOCATE_VERSION);
+       printf("Copyright 2020 Steinar H. Gunderson\n");
+       printf("License GPLv2+: GNU GPL version 2 or later <https://gnu.org/licenses/gpl.html>.\n");
+       printf("This is free software: you are free to change and redistribute it.\n");
+       printf("There is NO WARRANTY, to the extent permitted by law.\n");
+       exit(0);
 }
 
 int main(int argc, char **argv)
@@ -595,6 +607,7 @@ int main(int argc, char **argv)
                { "ignore-case", no_argument, 0, 'i' },
                { "limit", required_argument, 0, 'l' },
                { "null", no_argument, 0, '0' },
+               { "version", no_argument, 0, 'V' },
                { "debug", no_argument, 0, 'D' },  // Not documented.
                { 0, 0, 0, 0 }
        };
@@ -602,7 +615,7 @@ int main(int argc, char **argv)
        setlocale(LC_ALL, "");
        for (;;) {
                int option_index = 0;
-               int c = getopt_long(argc, argv, "cd:hil:n:0D", long_options, &option_index);
+               int c = getopt_long(argc, argv, "cd:hil:n:0VD", long_options, &option_index);
                if (c == -1) {
                        break;
                }
@@ -629,6 +642,9 @@ int main(int argc, char **argv)
                case 'D':
                        use_debug = true;
                        break;
+               case 'V':
+                       version();
+                       break;
                default:
                        exit(1);
                }