#include <fcntl.h>
#include <getopt.h>
#include <grp.h>
+#include <inttypes.h>
#include <iosfwd>
#include <math.h>
#include <memory>
bool filesystem_is_excluded(const char *path)
{
if (conf_debug_pruning) {
- /* This is debugging output, don't mark anything for translation */
fprintf(stderr, "Checking whether filesystem `%s' is excluded:\n", path);
}
FILE *f = setmntent("/proc/mounts", "r");
struct mntent *me;
while ((me = getmntent(f)) != nullptr) {
if (conf_debug_pruning) {
- /* This is debugging output, don't mark anything for translation */
fprintf(stderr, " `%s', type `%s'\n", me->mnt_dir, me->mnt_type);
}
string type(me->mnt_type);
if the filesystem is unavailable hard-mounted NFS. */
char *dir = me->mnt_dir;
if (conf_debug_pruning) {
- /* This is debugging output, don't mark anything for translation */
fprintf(stderr, " => type matches, dir `%s'\n", dir);
}
bool res = (strcmp(path, dir) == 0);
}
}
if (conf_debug_pruning) {
- /* This is debugging output, don't mark anything for translation */
fprintf(stderr, "...done\n");
}
endmntent(f);
// Takes ownership of fd.
int scan(const string &path, int fd, dev_t parent_dev, dir_time modified, dir_time db_modified, ExistingDB *existing_db, DatabaseReceiver *corpus, DictionaryBuilder *dict_builder)
{
- if (string_list_contains_dir_path(&conf_prunepaths, &conf_prunepaths_index, path)) {
- if (conf_debug_pruning) {
- /* This is debugging output, don't mark anything for translation */
- fprintf(stderr, "Skipping `%s': in prunepaths\n", path.c_str());
- }
- close(fd);
- return 0;
- }
if (conf_prune_bind_mounts && is_bind_mount(path.c_str())) {
if (conf_debug_pruning) {
- /* This is debugging output, don't mark anything for translation */
fprintf(stderr, "Skipping `%s': bind mount\n", path.c_str());
}
close(fd);
if (find(conf_prunenames.begin(), conf_prunenames.end(), e.name) != conf_prunenames.end()) {
if (conf_debug_pruning) {
- /* This is debugging output, don't mark anything for translation */
fprintf(stderr, "Skipping `%s': in prunenames\n", e.name.c_str());
}
continue;
}
+ if (string_list_contains_dir_path(&conf_prunepaths, &conf_prunepaths_index, (path_plus_slash + e.name).c_str())) {
+ if (conf_debug_pruning) {
+ fprintf(stderr, "Skipping `%s/%s': in prunepaths\n", path.c_str(), e.name.c_str());
+ }
+ continue;
+ }
e.fd = opendir_noatime(fd, e.name.c_str());
if (e.fd == -1) {
if (getrlimit(RLIMIT_NOFILE, &rlim) == -1) {
fprintf(stderr, "Hint: Try `ulimit -n 131072' or similar.\n");
} else {
- fprintf(stderr, "Hint: Try `ulimit -n %lu' or similar (current limit is %lu).\n",
- rlim.rlim_cur * 2, rlim.rlim_cur);
+ fprintf(stderr, "Hint: Try `ulimit -n %" PRIu64 " or similar (current limit is %" PRIu64 ").\n",
+ static_cast<uint64_t>(rlim.rlim_cur * 2), static_cast<uint64_t>(rlim.rlim_cur));
}
exit(1);
}
conf_prepare(argc, argv);
if (conf_prune_bind_mounts) {
- bind_mount_init(MOUNTINFO_PATH);
+ bind_mount_init();
}
int fd = open(conf_output.c_str(), O_RDONLY);