diff -up rsyslog-8.2506.0/plugins/imfile/imfile.c.orig rsyslog-8.2506.0/plugins/imfile/imfile.c --- rsyslog-8.2506.0/plugins/imfile/imfile.c.orig 2025-06-12 13:30:00.769607775 +0200 +++ rsyslog-8.2506.0/plugins/imfile/imfile.c 2025-06-12 13:30:26.453852622 +0200 @@ -157,6 +157,7 @@ struct instanceConf_s { int readTimeout; unsigned delay_perMsg; sbool bRMStateOnDel; + sbool deleteStateOnFileMove; /* delete state file when file being monitored is moved */ uint8_t readMode; uchar *startRegex; uchar *endRegex; @@ -340,6 +341,7 @@ static struct cnfparamdescr inppdescr[] { "persiststateinterval", eCmdHdlrInt, 0 }, { "persiststateaftersubmission", eCmdHdlrBinary, 0 }, { "deletestateonfiledelete", eCmdHdlrBinary, 0 }, + { "deletestateonfilemove", eCmdHdlrBinary, 0 }, { "delay.message", eCmdHdlrNonNegInt, 0 }, { "addmetadata", eCmdHdlrBinary, 0 }, { "addceetag", eCmdHdlrBinary, 0 }, @@ -1773,6 +1775,7 @@ createInstance(instanceConf_t **const pi inst->discardTruncatedMsg = 0; inst->msgDiscardingError = 1; inst->bRMStateOnDel = 1; + inst->deleteStateOnFileMove = 0; /* default to not deleting state on file move */ inst->escapeLF = 1; inst->escapeLFString = NULL; inst->reopenOnTruncate = 0; @@ -1995,6 +1998,8 @@ CODESTARTnewInpInst inst->msgDiscardingError = (sbool) pvals[i].val.d.n; } else if(!strcmp(inppblk.descr[i].name, "deletestateonfiledelete")) { inst->bRMStateOnDel = (sbool) pvals[i].val.d.n; // TODO: duplicate! + } else if(!strcmp(inppblk.descr[i].name, "deletestateonfilemove")) { + inst->deleteStateOnFileMove = (sbool) pvals[i].val.d.n; } else if(!strcmp(inppblk.descr[i].name, "addmetadata")) { inst->addMetadata = (sbool) pvals[i].val.d.n; } else if(!strcmp(inppblk.descr[i].name, "delay.message")) {