* imfifo: implement named pipe input module
Why:
Allows rsyslog to read logs line-by-line from local POSIX named pipes
(FIFOs) without blocking the startup sequence or spinning on EOF
disconnect loops.
Impact:
Adds the 'imfifo' input module and registers its test suite.
Before/After:
Rsyslog had no native named pipe input capability; now imfifo
provides dynamic, non-blocking FIFO input instances.
Technical Overview:
- Integrated imfifo into the autotools build system with
--enable-imfifo.
- Implemented plugins/imfifo/imfifo.c using the modern v6 config
syntax.
- Used open(path, O_RDWR) to keep a dummy writer, avoiding
startup hangs and EOF reopen loops.
- Implemented select-polling loop with 100ms timeout for
clean, quick shut down responses.
- Splitted incoming chunks by newline, submitting complete
messages using submitMsg2.
- Created tests/imfifo.sh and tests/imfifo-vg.sh to verify
correct function and Valgrind compatibility.
closes https://github.com/rsyslog/rsyslog/issues/440
With the help of AI-Agents: Antigravity
Why:
Mandate the local container testing validation per AGENTS.md before push.
To make it completely robust, we prevent empty or invalid marker commits
from bypassing the check, expand the file types that trigger re-run
(including Python, Dockerfile, YAML metadata, and tests), and handle git
history changes gracefully without crashes.
Impact:
Developer/AI agents are blocked from pushing if they touch C, Python, Docker,
YAML, or test files without running container validation first.
Before/After:
Before, container validation wasn't wired, or empty/invalid markers could
be bypassed or cause shell crashes. Now, the hook is fully integrated, robust
against invalid commit hashes, and covers all relevant file extensions.
Technical Overview:
1. Wire pre_push_container_gate.sh into hooks.json under PreToolUse for Bash.
2. Use git rev-parse to verify the validation marker commit hash actually
exists in the local repository before running diffs.
3. Expand file matching regex to include .py, Dockerfile,
MODULE_METADATA.yaml, and any files under tests/.
4. Gitignore .codex/container_validated.marker to keep mutable local developer
state out of commits.
With the help of AI-Agents: Antigravity
Why: recent Codex CLI payloads now wrap shell commands as
`bash -lc '...'`, so the repo-local pre-commit gate stopped
recognizing `git commit` invocations and no longer ran.
Impact: the hook now intercepts both direct and shell-wrapped
`git commit` commands before the commit proceeds.
Before/After: wrapped `git commit` payloads bypassed the gate;
now they are detected and processed like direct invocations.
Technical Overview:
Teach the hook parser to unwrap `bash`, `sh`, and `zsh`
launchers that pass commands via `-c` or `-lc`.
Recurse into the nested shell command and reuse the existing
`git commit` matcher on the extracted simple commands.
Document the wrapped-command form in `.codex/README.md` so the
expected runtime shape stays visible next to the hook setup.
Validation: `bash -n .codex/pre_commit_format_gate.sh`; manual
PreToolUse payload smoke tests for direct and wrapped
`git commit --help` commands.
With the help of AI-Agents: Codex
Add a repo-local Codex hook setup under `.codex/` so trusted Codex
users get pre-commit guardrails automatically in this repository.
The hook intercepts Bash-based `git commit` tool calls and first runs
the deterministic repo-policy focus checks against the staged commit
snapshot so invariant violations are reported before formatting.
If those checks pass, the hook runs
`./devtools/format-code.sh --git-changed`, skips unrelated Git commands,
allows commits when `clang-format-18` is unavailable, skips formatting
when no tracked `.c` or `.h` files changed, and blocks partial-staging
cases or real formatter failures.
When formatting changes files, the hook re-stages only the tracked files
that were already part of the pending commit.
Add `devtools/list-git-changed-c-h-files.sh` so the hook and formatter
share one source of truth for tracked changed `.c` and `.h` files.
With the help of AI-Agents: Codex