<?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" [
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

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

  <refentryinfo>
    <title>udev_enumerate_scan_devices</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>udev_enumerate_scan_devices</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>udev_enumerate_scan_devices</refname>
    <refname>udev_enumerate_scan_subsystems</refname>
    <refname>udev_enumerate_get_list_entry</refname>
    <refname>udev_enumerate_add_syspath</refname>
    <refname>udev_enumerate_get_udev</refname>

    <refpurpose>Query or modify a udev enumerate object</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcsynopsisinfo>#include &lt;libudev.h&gt;</funcsynopsisinfo>

      <funcprototype>
        <funcdef>int <function>udev_enumerate_scan_devices</function></funcdef>
        <paramdef>struct udev_enumerate *<parameter>udev_enumerate</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>udev_enumerate_scan_subsystems</function></funcdef>
        <paramdef>struct udev_enumerate *<parameter>udev_enumerate</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>struct udev_list_entry *<function>udev_enumerate_get_list_entry</function></funcdef>
        <paramdef>struct udev_enumerate *<parameter>udev_enumerate</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>udev_enumerate_add_syspath</function></funcdef>
        <paramdef>struct udev_enumerate *<parameter>udev_enumerate</parameter></paramdef>
        <paramdef>const char *<parameter>syspath</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>struct udev *<function>udev_enumerate_get_udev</function></funcdef>
        <paramdef>struct udev_enumerate *<parameter>udev_enumerate</parameter></paramdef>
      </funcprototype>

    </funcsynopsis>
  </refsynopsisdiv>

  <!--<refsect1>
    <title>Description</title>

    <para>XXX: Add short description.</para>
  </refsect1>-->

  <refsect1>
    <title>Return Value</title>

    <para>On success,
    <function>udev_enumerate_scan_devices()</function>,
    <function>udev_enumerate_scan_subsystems()</function> and
    <function>udev_enumerate_add_syspath()</function>
    return an integer greater than, or equal to,
    <constant>0</constant>.</para>

    <para>On success,
    <function>udev_enumerate_get_list_entry()</function>
    returns a pointer to the first entry in the list of found
    devices. If the list is empty, or on failure,
    <constant>NULL</constant> is returned.</para>

    <para><function>udev_enumerate_get_udev()</function> always
    returns a pointer to the udev context that this enumerated
    object is associated with.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>

    <para>
      <citerefentry><refentrytitle>udev_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>udev_device_new_from_syspath</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>udev_enumerate_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>udev_enumerate_add_match_subsystem</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>udev_monitor_new_from_netlink</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>udev_list_entry</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
    </para>
  </refsect1>

</refentry>
