This commit applies the new canonical formatting style using `clang-format` with custom settings (notably 4-space indentation), as part of our shift toward automated formatting normalization. ⚠️ No functional changes are included — only whitespace and layout modifications as produced by `clang-format`. This change is part of the formatting modernization strategy discussed in: https://github.com/rsyslog/rsyslog/issues/5747 Key context: - Formatting is now treated as a disposable view, normalized via tooling. - The `.clang-format` file defines the canonical style. - A fixup script (`devtools/format-code.sh`) handles remaining edge cases. - Formatting commits are added to `.git-blame-ignore-revs` to reduce noise. - Developers remain free to format code however they prefer locally.
What?
This directory contains external plugins. That are plugins which run in an external process, contrary to the in-process plugins that rsyslog traditionally uses.
Why?
The prime use case probably is to enable plugin development in languages other than C. Often, the high performance of a pure C plugin is not needed, simply because the use case does not need it or the destination that is being connected to is itself "slow enough" that one does not note the difference.
Something missing?
Consider writing it in your favorite language and contributing it back to the rsyslog project. Patches are happily accepted. There is a "skeletons" directory which contains simple skeletons which simply can be amended by your app-specific coding. The number of languages for skeletons is ever increasing. If there is not yet a skeleton for your favorite languagem, we will gladly help you creating one. It's really easy and usually done with just a couple of code lines!
How to write your own plugin?
View this presentation to learn howto write a plugin in 2 minutes: http://www.slideshare.net/rainergerhards1/writing-rsyslog-p
See the INTERFACE file. And see the skeletons subdirectory for existing ready-to-copy sample plugins that do the necessary plumbing.
Evolving this Interface
The interface is build via omprog, and is currently being evolved. What is there is robust and stable, but even better stuff is upcoming.