* Implement SKIPPED report status for lms_check(). * Flag to ignore symbolic links, set by default. Using symlinks may lead user to scan the same file more than once and also scan media outside of his library. If one uses realpath() to always have an unique instance of the file parsed, he still will suffer from media outside his chosen folders. If to fix this, together with the previous fix will led to the same situation as ignore symlinks, but without the check overhead. * Try to address need of whole path lookup using open(), stat(), readdir()... by using *at() variants, like openat(), fstatat(). * Provide threaded version of lms_process() and lms_check(), this helps in multicore setups, where one will read and cache filesystems while the other will parse files. Study the CPU affinity implications on this, setting better defaults. * Evaluate if there is a way to detect if a string is already in UTF-8, probably it's impossible to know due the broad range of possible values, but maybe there is a way to give hints for latin, asian, western european charsets? * Check/benchmark buffered vs unbuffered IO and possibly use mmap. There are lots of code in plugin issuing one read(2) syscall for small things like 4 bytes. Setting a proper buffer size (e.g. setvbuf) and reading all at once would be better performance-wise. Another option is to write the common code for handling sigbus and use mmap instead. Check also whether pread/preadv/readv would be an option for some plugins.