При создании пустого файла производится добавление в список для отслеживания. При записи файла производится повторная проверка данных.
This commit is contained in:
parent
a3bfab2365
commit
98d414c44d
3 changed files with 22 additions and 6 deletions
|
|
@ -293,7 +293,10 @@ public:
|
|||
if (pid != _pid) {
|
||||
string typeFile = magic_descriptor(_magic, fd).fromStringz;
|
||||
|
||||
if (typeFile == "binary") {
|
||||
// Если файл имеет размер и при этом бинарный - то пропустить,
|
||||
// иначе файл пуст и не имеет данных для точной идентификации по типу содержимого.
|
||||
// При записи в файл данные будут повторно проверены
|
||||
if (!fd.isEmpty() && typeFile == "binary") {
|
||||
trace("Бинарный файл. Пропуск обработки: ", path);
|
||||
} else {
|
||||
string childPath;
|
||||
|
|
@ -353,10 +356,17 @@ public:
|
|||
DevIno key;
|
||||
if (getDevIno(fd, key, pid)) {
|
||||
if (Session* ps = key in _gMap) {
|
||||
ps.data = readAllFromFd(fd).dup;
|
||||
send(_tid, *ps);
|
||||
// Для новых созданных файлов (пустых) необходимо проверить записываемые данные
|
||||
string typeFile = magic_descriptor(_magic, fd).fromStringz;
|
||||
if (typeFile == "binary") {
|
||||
infof("[%d] Добавлены бинарные данные. Файл удален из списка для отслеживания: %s",
|
||||
_gMap.length, ps.filePathOpen);
|
||||
} else {
|
||||
ps.data = readAllFromFd(fd).dup;
|
||||
send(_tid, *ps);
|
||||
infof("[%d] Файл передан для создания снимка: %s", _gMap.length, ps.filePathOpen);
|
||||
}
|
||||
_gMap.remove(key);
|
||||
infof("[%d] Файл передан для создания снимка: %s", _gMap.length, ps.filePathOpen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -201,4 +201,10 @@ string getDate(SysTime created) {
|
|||
return format("%04d-%02d-%02d %02d:%02d:%02d",
|
||||
dt.year, dt.month, dt.day,
|
||||
current.hour, current.minute, current.second);
|
||||
}
|
||||
}
|
||||
|
||||
bool isEmpty(int fd) {
|
||||
stat_t st;
|
||||
if (fstat(fd, &st) != 0) return false;
|
||||
return st.st_size == 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
module dwatch.version_;
|
||||
|
||||
enum dwatchVersion = "0.0.12";
|
||||
enum dwatchVersion = "0.0.13";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue