mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
ScannedFile: Allow skipping canonicalization
This commit is contained in:
parent
3c16b0720a
commit
2a8040039a
2 changed files with 10 additions and 3 deletions
|
@ -13,14 +13,15 @@ namespace zeek::detail {
|
||||||
std::list<ScannedFile> files_scanned;
|
std::list<ScannedFile> files_scanned;
|
||||||
std::vector<SignatureFile> sig_files;
|
std::vector<SignatureFile> sig_files;
|
||||||
|
|
||||||
ScannedFile::ScannedFile(int arg_include_level, std::string arg_name, bool arg_skipped, bool arg_prefixes_checked)
|
ScannedFile::ScannedFile(int arg_include_level, std::string arg_name, bool arg_skipped, bool arg_prefixes_checked,
|
||||||
|
bool arg_is_canonical)
|
||||||
: include_level(arg_include_level),
|
: include_level(arg_include_level),
|
||||||
skipped(arg_skipped),
|
skipped(arg_skipped),
|
||||||
prefixes_checked(arg_prefixes_checked),
|
prefixes_checked(arg_prefixes_checked),
|
||||||
name(std::move(arg_name)) {
|
name(std::move(arg_name)) {
|
||||||
if ( name == canonical_stdin_path )
|
if ( name == canonical_stdin_path )
|
||||||
canonical_path = canonical_stdin_path;
|
canonical_path = canonical_stdin_path;
|
||||||
else {
|
else if ( ! arg_is_canonical ) {
|
||||||
std::error_code ec;
|
std::error_code ec;
|
||||||
auto canon = filesystem::canonical(name, ec);
|
auto canon = filesystem::canonical(name, ec);
|
||||||
if ( ec )
|
if ( ec )
|
||||||
|
@ -28,6 +29,9 @@ ScannedFile::ScannedFile(int arg_include_level, std::string arg_name, bool arg_s
|
||||||
|
|
||||||
canonical_path = canon.string();
|
canonical_path = canon.string();
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
canonical_path = name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ScannedFile::AlreadyScanned() const {
|
bool ScannedFile::AlreadyScanned() const {
|
||||||
|
|
|
@ -12,10 +12,13 @@ namespace zeek::detail {
|
||||||
|
|
||||||
// Script file we have already scanned (or are in the process of scanning).
|
// Script file we have already scanned (or are in the process of scanning).
|
||||||
// They are identified by normalized canonical path.
|
// They are identified by normalized canonical path.
|
||||||
|
//
|
||||||
|
// If arg_is_canonical is set to true, assume arg_name is canonicalized and
|
||||||
|
// skip resolving the canonical name.
|
||||||
class ScannedFile {
|
class ScannedFile {
|
||||||
public:
|
public:
|
||||||
ScannedFile(int arg_include_level, std::string arg_name, bool arg_skipped = false,
|
ScannedFile(int arg_include_level, std::string arg_name, bool arg_skipped = false,
|
||||||
bool arg_prefixes_checked = false);
|
bool arg_prefixes_checked = false, bool arg_is_canonical = false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compares the canonical path of this file against every canonical path
|
* Compares the canonical path of this file against every canonical path
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue