'\" t .TH "SD_JOURNAL_ENUMERATE_FIELDS" "3" "" "systemd 247" "sd_journal_enumerate_fields" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" sd_journal_enumerate_fields, sd_journal_restart_fields, SD_JOURNAL_FOREACH_FIELD \- Read used field names from the journal .SH "SYNOPSIS" .sp .ft B .nf #include .fi .ft .HP \w'int\ sd_journal_enumerate_fields('u .BI "int sd_journal_enumerate_fields(sd_journal\ *" "j" ", const\ char\ **" "field" ");" .HP \w'void\ sd_journal_restart_fields('u .BI "void sd_journal_restart_fields(sd_journal\ *" "j" ");" .HP \w'SD_JOURNAL_FOREACH_FIELD('u .BI "SD_JOURNAL_FOREACH_FIELD(sd_journal\ *" "j" ", const\ char\ *" "field" ");" .SH "DESCRIPTION" .PP \fBsd_journal_enumerate_fields()\fR may be used to iterate through all field names used in the opened journal files\&. On each invocation the next field name is returned\&. The order of the returned field names is not defined\&. It takes two arguments: the journal context object, plus a pointer to a constant string pointer where the field name is stored in\&. The returned data is in a read\-only memory map and is only valid until the next invocation of \fBsd_journal_enumerate_fields()\fR\&. Note that this call is subject to the data field size threshold as controlled by \fBsd_journal_set_data_threshold()\fR\&. .PP \fBsd_journal_restart_fields()\fR resets the field name enumeration index to the beginning of the list\&. The next invocation of \fBsd_journal_enumerate_fields()\fR will return the first field name again\&. .PP The \fBSD_JOURNAL_FOREACH_FIELD()\fR macro may be used as a handy wrapper around \fBsd_journal_restart_fields()\fR and \fBsd_journal_enumerate_fields()\fR\&. .PP These functions currently are not influenced by matches set with \fBsd_journal_add_match()\fR but this might change in a later version of this software\&. .PP To retrieve the possible values a specific field can take use \fBsd_journal_query_unique\fR(3)\&. .SH "RETURN VALUE" .PP \fBsd_journal_enumerate_fields()\fR returns a positive integer if the next field name has been read, 0 when no more field names are known, or a negative errno\-style error code\&. \fBsd_journal_restart_fields()\fR returns nothing\&. .SH "NOTES" .PP All functions listed here are thread\-agnostic and only a single specific thread may operate on a given object during its entire lifetime\&. It\*(Aqs safe to allocate multiple independent objects and use each from a specific thread in parallel\&. However, it\*(Aqs not safe to allocate such an object in one thread, and operate or free it from any other, even if locking is used to ensure these threads don\*(Aqt operate on it at the very same time\&. .PP These APIs are implemented as a shared library, which can be compiled and linked to with the \fBlibsystemd\fR\ \&\fBpkg-config\fR(1) file\&. .SH "EXAMPLES" .PP Use the \fBSD_JOURNAL_FOREACH_FIELD()\fR macro to iterate through all field names in use in the current journal\&. .sp .if n \{\ .RS 4 .\} .nf #include #include #include 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\en", strerror(\-r)); return 1; } SD_JOURNAL_FOREACH_FIELD(j, field) printf("%s\en", field); sd_journal_close(j); return 0; } .fi .if n \{\ .RE .\} .SH "SEE ALSO" .PP \fBsystemd\fR(1), \fBsystemd.journal-fields\fR(7), \fBsd-journal\fR(3), \fBsd_journal_open\fR(3), \fBsd_journal_query_unique\fR(3), \fBsd_journal_get_data\fR(3), \fBsd_journal_add_match\fR(3)