<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<!--
  SPDX-License-Identifier: LGPL-2.1-or-later
-->

<refentry id="sd_journal_has_runtime_files" xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>sd_journal_has_runtime_files</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_journal_has_runtime_files</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_journal_has_runtime_files</refname>
    <refname>sd_journal_has_persistent_files</refname>
    <refpurpose>Query availability of runtime or persistent journal files</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcsynopsisinfo>#include &lt;systemd/sd-journal.h&gt;</funcsynopsisinfo>

      <funcprototype>
        <funcdef>int <function>sd_journal_has_runtime_files</function></funcdef>
        <paramdef>sd_journal *<parameter>j</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_journal_has_persistent_files</function></funcdef>
        <paramdef>sd_journal *<parameter>j</parameter></paramdef>
      </funcprototype>

    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><function>sd_journal_has_runtime_files()</function> returns a positive value
    if runtime journal files (present in /run/systemd/journal/) have been found.
    Otherwise returns 0.</para>

    <para><function>sd_journal_has_persistent_files()</function> returns a positive value
    if persistent journal files (present in /var/log/journal/) have been found.
    Otherwise returns 0.</para>
  </refsect1>

  <refsect1>
    <title>Return value</title>
    <para>Both <function>sd_journal_has_runtime_files()</function>
    and <function>sd_journal_has_persistent_files()</function> return -EINVAL
    if their argument is <constant>NULL</constant>.
    </para>
  </refsect1>

  <refsect1>
    <title>Notes</title>

    <xi:include href="threads-aware.xml" xpointer="strict"/>

    <xi:include href="libsystemd-pkgconfig.xml" xpointer="pkgconfig-text"/>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
