X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=plocate.cpp;h=7182ee892dfa839b5b50794a4e22582500759996;hb=31641da5750ed2b80697e605bf5b50c0a92264af;hp=6b8b3d8dcad564ba335ba957864363cec8ddf4ab;hpb=eb4a3c2c5efd9ce0e204e54c78f64d3d96b49091;p=plocate diff --git a/plocate.cpp b/plocate.cpp index 6b8b3d8..7182ee8 100644 --- a/plocate.cpp +++ b/plocate.cpp @@ -367,7 +367,7 @@ uint64_t scan_all_docids(const vector &needles, int fd, const Corpus &co string compressed; { - unique_lock lock(mu); + unique_lock lock(mu); queue_added.wait(lock, [&work_queue, &done] { return !work_queue.empty() || done; }); if (done && work_queue.empty()) { return; @@ -397,7 +397,7 @@ uint64_t scan_all_docids(const vector &needles, int fd, const Corpus &co complete_pread(fd, &compressed[0], io_len, offsets[io_docid]); { - unique_lock lock(mu); + unique_lock lock(mu); queue_removed.wait(lock, [&work_queue] { return work_queue.size() < 256; }); // Allow ~2MB of data queued up. work_queue.emplace_back(io_docid, last_docid, move(compressed)); queue_added.notify_one(); // Avoid the thundering herd. @@ -571,7 +571,7 @@ uint64_t do_search_file(const vector &needles, const std::string &filena if (only_count) { printf("0\n"); } - exit(0); + exit(1); } } } @@ -837,6 +837,7 @@ int main(int argc, char **argv) static const struct option long_options[] = { { "help", no_argument, 0, 'h' }, { "count", no_argument, 0, 'c' }, + { "all", no_argument, 0, 'A' }, { "basename", no_argument, 0, 'b' }, { "database", required_argument, 0, 'd' }, { "existing", no_argument, 0, 'e' }, @@ -857,11 +858,14 @@ int main(int argc, char **argv) setlocale(LC_ALL, ""); for (;;) { int option_index = 0; - int c = getopt_long(argc, argv, "bcd:ehil:n:N0rwVD", long_options, &option_index); + int c = getopt_long(argc, argv, "Abcd:ehil:n:N0rwVD", long_options, &option_index); if (c == -1) { break; } switch (c) { + case 'A': + // Ignored. + break; case 'b': match_basename = true; break; @@ -968,7 +972,7 @@ int main(int argc, char **argv) } if (needles.empty()) { fprintf(stderr, "plocate: no pattern to search for specified\n"); - exit(0); + exit(1); } if (dbpaths.empty()) { @@ -996,4 +1000,6 @@ int main(int argc, char **argv) if (only_count) { printf("%" PRId64 "\n", matched); } + + return matched == 0; }