summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-10-10 09:18:26 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-10-11 16:59:00 +0200
commit29c45dc4348e7db61aa80ba1657cbc2d8b1a19ee (patch)
tree82cedba74276d810467c79a990d7952b90852e8a
parentGet rid of strerror_safe() (diff)
downloadsystemd-29c45dc4348e7db61aa80ba1657cbc2d8b1a19ee.tar.xz
systemd-29c45dc4348e7db61aa80ba1657cbc2d8b1a19ee.zip
man: use external .c files for three examples
This way it's much easier to test that the code compiles without issues. It's also easier to edit the code. Indentation in one of the examples is reduced to two spaces. This is what we use in man pages to make them fit on screen better.
-rw-r--r--man/journal-enumerate-fields.c21
-rw-r--r--man/journal-iterate-foreach.c29
-rw-r--r--man/journal-stream-fd.c28
-rw-r--r--man/sd_journal_enumerate_fields.xml21
-rw-r--r--man/sd_journal_next.xml29
-rw-r--r--man/sd_journal_stream_fd.xml28
6 files changed, 81 insertions, 75 deletions
diff --git a/man/journal-enumerate-fields.c b/man/journal-enumerate-fields.c
new file mode 100644
index 0000000000..8a35785440
--- /dev/null
+++ b/man/journal-enumerate-fields.c
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: CC0-1.0 */
+
+#include <stdio.h>
+#include <string.h>
+#include <systemd/sd-journal.h>
+
+int main(int argc, char *argv[]) {
+ sd_journal *j;
+ const char *field;
+ int r;
+
+ r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY);
+ if (r < 0) {
+ fprintf(stderr, "Failed to open journal: %s\n", strerror(-r));
+ return 1;
+ }
+ SD_JOURNAL_FOREACH_FIELD(j, field)
+ printf("%s\n", field);
+ sd_journal_close(j);
+ return 0;
+}
diff --git a/man/journal-iterate-foreach.c b/man/journal-iterate-foreach.c
new file mode 100644
index 0000000000..ae53d467ed
--- /dev/null
+++ b/man/journal-iterate-foreach.c
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: CC0-1.0 */
+
+#include <stdio.h>
+#include <string.h>
+#include <systemd/sd-journal.h>
+
+int main(int argc, char *argv[]) {
+ int r;
+ sd_journal *j;
+ r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY);
+ if (r < 0) {
+ fprintf(stderr, "Failed to open journal: %s\n", strerror(-r));
+ return 1;
+ }
+ SD_JOURNAL_FOREACH(j) {
+ const char *d;
+ size_t l;
+
+ r = sd_journal_get_data(j, "MESSAGE", (const void **)&d, &l);
+ if (r < 0) {
+ fprintf(stderr, "Failed to read message field: %s\n", strerror(-r));
+ continue;
+ }
+
+ printf("%.*s\n", (int) l, d);
+ }
+ sd_journal_close(j);
+ return 0;
+}
diff --git a/man/journal-stream-fd.c b/man/journal-stream-fd.c
new file mode 100644
index 0000000000..6bc5582189
--- /dev/null
+++ b/man/journal-stream-fd.c
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: CC0-1.0 */
+
+#include <syslog.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <systemd/sd-journal.h>
+#include <systemd/sd-daemon.h>
+
+int main(int argc, char *argv[]) {
+ int fd;
+ FILE *log;
+ fd = sd_journal_stream_fd("test", LOG_INFO, 1);
+ if (fd < 0) {
+ fprintf(stderr, "Failed to create stream fd: %s\n", strerror(-fd));
+ return 1;
+ }
+ log = fdopen(fd, "w");
+ if (!log) {
+ fprintf(stderr, "Failed to create file object: %m\n");
+ close(fd);
+ return 1;
+ }
+ fprintf(log, "Hello World!\n");
+ fprintf(log, SD_WARNING "This is a warning!\n");
+ fclose(log);
+ return 0;
+}
diff --git a/man/sd_journal_enumerate_fields.xml b/man/sd_journal_enumerate_fields.xml
index e074906980..2d8055ec89 100644
--- a/man/sd_journal_enumerate_fields.xml
+++ b/man/sd_journal_enumerate_fields.xml
@@ -94,26 +94,7 @@
<para>Use the <function>SD_JOURNAL_FOREACH_FIELD()</function> macro to iterate through all field names in use in the
current journal.</para>
- <programlisting>#include &lt;stdio.h&gt;
-#include &lt;string.h&gt;
-#include &lt;systemd/sd-journal.h&gt;
-
-int main(int argc, char *argv[]) {
- sd_journal *j;
- const char *field;
- int r;
-
- r = sd_journal_open(&amp;j, SD_JOURNAL_LOCAL_ONLY);
- if (r &lt; 0) {
- fprintf(stderr, "Failed to open journal: %s\n", strerror(-r));
- return 1;
- }
- SD_JOURNAL_FOREACH_FIELD(j, field)
- printf("%s\n", field);
- sd_journal_close(j);
- return 0;
-}</programlisting>
-
+ <programlisting><xi:include href="journal-enumerate-fields.c" parse="text" /></programlisting>
</refsect1>
<refsect1>
diff --git a/man/sd_journal_next.xml b/man/sd_journal_next.xml
index e0f0a04974..628abb296c 100644
--- a/man/sd_journal_next.xml
+++ b/man/sd_journal_next.xml
@@ -129,34 +129,7 @@
<para>Iterating through the journal:</para>
- <programlisting>#include &lt;stdio.h&gt;
-#include &lt;string.h&gt;
-#include &lt;systemd/sd-journal.h&gt;
-
-int main(int argc, char *argv[]) {
- int r;
- sd_journal *j;
- r = sd_journal_open(&amp;j, SD_JOURNAL_LOCAL_ONLY);
- if (r &lt; 0) {
- fprintf(stderr, "Failed to open journal: %s\n", strerror(-r));
- return 1;
- }
- SD_JOURNAL_FOREACH(j) {
- const char *d;
- size_t l;
-
- r = sd_journal_get_data(j, "MESSAGE", (const void **)&amp;d, &amp;l);
- if (r &lt; 0) {
- fprintf(stderr, "Failed to read message field: %s\n", strerror(-r));
- continue;
- }
-
- printf("%.*s\n", (int) l, d);
- }
- sd_journal_close(j);
- return 0;
-}</programlisting>
-
+ <programlisting><xi:include href="journal-iterate-foreach.c" parse="text" /></programlisting>
</refsect1>
<refsect1>
diff --git a/man/sd_journal_stream_fd.xml b/man/sd_journal_stream_fd.xml
index af2234e77d..40d2804121 100644
--- a/man/sd_journal_stream_fd.xml
+++ b/man/sd_journal_stream_fd.xml
@@ -100,33 +100,7 @@
<para>Creating a log stream suitable for
<citerefentry project='man-pages'><refentrytitle>fprintf</refentrytitle><manvolnum>3</manvolnum></citerefentry>:</para>
- <programlisting>#include &lt;syslog.h&gt;
-#include &lt;stdio.h&gt;
-#include &lt;string.h&gt;
-#include &lt;unistd.h&gt;
-#include &lt;systemd/sd-journal.h&gt;
-#include &lt;systemd/sd-daemon.h&gt;
-
-int main(int argc, char *argv[]) {
- int fd;
- FILE *log;
- fd = sd_journal_stream_fd("test", LOG_INFO, 1);
- if (fd &lt; 0) {
- fprintf(stderr, "Failed to create stream fd: %s\n", strerror(-fd));
- return 1;
- }
- log = fdopen(fd, "w");
- if (!log) {
- fprintf(stderr, "Failed to create file object: %m\n");
- close(fd);
- return 1;
- }
- fprintf(log, "Hello World!\n");
- fprintf(log, SD_WARNING "This is a warning!\n");
- fclose(log);
- return 0;
-}</programlisting>
-
+ <programlisting><xi:include href="journal-stream-fd.c" parse="text" /></programlisting>
</refsect1>
<refsect1>