#include "db.h"
#include "io_uring_engine.h"
#include "parse_trigrams.h"
+#include "turbopfor.h"
#include "unique_sort.h"
#include <algorithm>
} \
} 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;
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)
{ "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 }
};
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;
}
case 'D':
use_debug = true;
break;
+ case 'V':
+ version();
+ break;
default:
exit(1);
}