<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
- This file is part of systemd.
+ This file is part of elogind.
Copyright 2010 Lennart Poettering
- systemd is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ elogind is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
- systemd is distributed in the hope that it will be useful, but
+ elogind is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
+ Lesser General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with systemd; If not, see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU Lesser General Public License
+ along with elogind; If not, see <http://www.gnu.org/licenses/>.
-->
-<refentry id="sd_is_fifo">
-
- <refentryinfo>
- <title>sd_is_fifo</title>
- <productname>systemd</productname>
-
- <authorgroup>
- <author>
- <contrib>Developer</contrib>
- <firstname>Lennart</firstname>
- <surname>Poettering</surname>
- <email>lennart@poettering.net</email>
- </author>
- </authorgroup>
- </refentryinfo>
-
- <refmeta>
- <refentrytitle>sd_is_fifo</refentrytitle>
- <manvolnum>3</manvolnum>
- </refmeta>
-
- <refnamediv>
- <refname>sd_is_fifo</refname>
- <refname>sd_is_socket</refname>
- <refname>sd_is_socket_inet</refname>
- <refname>sd_is_socket_unix</refname>
- <refname>sd_is_mq</refname>
- <refpurpose>Check the type of a file descriptor</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
- <funcsynopsis>
- <funcsynopsisinfo>#include "sd-daemon.h"</funcsynopsisinfo>
-
- <funcprototype>
- <funcdef>int <function>sd_is_fifo</function></funcdef>
- <paramdef>int <parameter>fd</parameter></paramdef>
- <paramdef>const char *<parameter>path</parameter></paramdef>
- </funcprototype>
-
- <funcprototype>
- <funcdef>int <function>sd_is_socket</function></funcdef>
- <paramdef>int <parameter>fd</parameter></paramdef>
- <paramdef>int <parameter>family</parameter></paramdef>
- <paramdef>int <parameter>type</parameter></paramdef>
- <paramdef>int <parameter>listening</parameter></paramdef>
- </funcprototype>
-
- <funcprototype>
- <funcdef>int <function>sd_is_socket_inet</function></funcdef>
- <paramdef>int <parameter>fd</parameter></paramdef>
- <paramdef>int <parameter>family</parameter></paramdef>
- <paramdef>int <parameter>type</parameter></paramdef>
- <paramdef>int <parameter>listening</parameter></paramdef>
- <paramdef>uint16_t <parameter>port</parameter></paramdef>
- </funcprototype>
-
- <funcprototype>
- <funcdef>int <function>sd_is_socket_unix</function></funcdef>
- <paramdef>int <parameter>fd</parameter></paramdef>
- <paramdef>int <parameter>type</parameter></paramdef>
- <paramdef>int <parameter>listening</parameter></paramdef>
- <paramdef>const char* <parameter>path</parameter></paramdef>
- <paramdef>size_t <parameter>length</parameter></paramdef>
- </funcprototype>
-
- <funcprototype>
- <funcdef>int <function>sd_is_mq</function></funcdef>
- <paramdef>int <parameter>fd</parameter></paramdef>
- <paramdef>const char *<parameter>path</parameter></paramdef>
- </funcprototype>
-
- </funcsynopsis>
- </refsynopsisdiv>
-
- <refsect1>
- <title>Description</title>
-
- <para><function>sd_is_fifo()</function> may be called
- to check whether the specified file descriptor refers
- to a FIFO or pipe. If the <parameter>path</parameter>
- parameter is not NULL, it is checked whether the FIFO
- is bound to the specified file system path.</para>
-
- <para><function>sd_is_socket()</function> may be
- called to check whether the specified file descriptor
- refers to a socket. It the
- <parameter>family</parameter> parameter is not
- AF_UNSPEC it is checked whether the socket is of the
- specified family (AF_UNIX, AF_INET, ...). If the
- <parameter>type</parameter> parameter is not 0 it is
- checked whether the socket is of the specified type
- (SOCK_STREAM, SOCK_DGRAM, ...). If the
- <parameter>listening</parameter> parameter is positive
- it is checked whether the socket is in accepting mode,
- i.e. <function>listen()</function> has been called for
- it. If <parameter>listening</parameter> is 0, it is
- checked whether the socket is not in this mode. If the
- parameter is negative, no such check is made. The
- <parameter>listening</parameter> parameter should only
- be used for stream sockets and should be set to a
- negative value otherwise.</para>
-
- <para><function>sd_is_socket_inet()</function> is
- similar to <function>sd_is_socket()</function>, but
- optionally checks the IPv4 or IPv6 port number the
- socket is bound to, unless <parameter>port</parameter>
- is zero. For this call <parameter>family</parameter>
- must be passed as either AF_UNSPEC, AF_INET or
- AF_INET6.</para>
-
- <para><function>sd_is_socket_unix()</function> is
- similar to <function>sd_is_socket()</function>, but
- optionally checks the AF_UNIX path the socket is bound
- to, unless the <parameter>path</parameter> parameter
- is NULL. For normal file system AF_UNIX sockets set
- the <parameter>length</parameter> parameter to 0. For
- Linux abstract namespace sockets set the
- <parameter>length</parameter> to the size of the
- address, including the initial 0 byte and set
- <parameter>path</parameter> to the initial 0 byte of
- the socket address.</para>
-
- <para><function>sd_is_mq()</function> may be called to
- check whether the specified file descriptor refers to
- a POSIX message queue. If the
- <parameter>path</parameter> parameter is not NULL, it
- is checked whether the message queue is bound to the
- specified name.</para>
- </refsect1>
-
- <refsect1>
- <title>Return Value</title>
-
- <para>On failure, these calls return a negative
- errno-style error code. If the file descriptor is of
- the specified type and bound to the specified address
- a positive return value is returned, otherwise
- zero.</para>
- </refsect1>
-
- <refsect1>
- <title>Notes</title>
-
- <para>These functions are provided by the reference
- implementation of APIs for new-style daemons and
- distributed with the systemd package. The algorithms
- they implement are simple, and can easily be
- reimplemented in daemons if it is important to support
- this interface without using the reference
- implementation.</para>
-
- <para>Internally, these function use a combination of
- <filename>fstat()</filename> and
- <filename>getsockname()</filename> to check the file
- descriptor type and where it is bound to.</para>
-
- <para>For details about the algorithm check the
- liberally licensed reference implementation sources:
- <ulink url="http://cgit.freedesktop.org/systemd/tree/src/sd-daemon.c"/>
- resp. <ulink
- url="http://cgit.freedesktop.org/systemd/tree/src/sd-daemon.h"/></para>
-
- <para><function>sd_is_fifo()</function> and the
- related functions are implemented in the reference
- implementation's drop-in
- <filename>sd-daemon.c</filename> and
- <filename>sd-daemon.h</filename> files. It is
- recommended that applications consuming these APIs
- copy the implementation into their source tree. For
- more details about the reference implementation see
- <citerefentry><refentrytitle>sd_daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry></para>
-
- <para>These functions continue to work as described,
- even if -DDISABLE_SYSTEMD is set during
- compilation.</para>
- </refsect1>
-
- <refsect1>
- <title>See Also</title>
- <para>
- <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- </para>
- </refsect1>
+<refentry id="sd_is_fifo"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+
+ <refentryinfo>
+ <title>sd_is_fifo</title>
+ <productname>elogind</productname>
+
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Lennart</firstname>
+ <surname>Poettering</surname>
+ <email>lennart@poettering.net</email>
+ </author>
+ </authorgroup>
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>sd_is_fifo</refentrytitle>
+ <manvolnum>3</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>sd_is_fifo</refname>
+ <refname>sd_is_socket</refname>
+ <refname>sd_is_socket_inet</refname>
+ <refname>sd_is_socket_unix</refname>
+ <refname>sd_is_special</refname>
+ <refpurpose>Check the type of a file descriptor</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <funcsynopsis>
+ <funcsynopsisinfo>#include <elogind/sd-daemon.h></funcsynopsisinfo>
+
+ <funcprototype>
+ <funcdef>int <function>sd_is_fifo</function></funcdef>
+ <paramdef>int <parameter>fd</parameter></paramdef>
+ <paramdef>const char *<parameter>path</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_is_socket</function></funcdef>
+ <paramdef>int <parameter>fd</parameter></paramdef>
+ <paramdef>int <parameter>family</parameter></paramdef>
+ <paramdef>int <parameter>type</parameter></paramdef>
+ <paramdef>int <parameter>listening</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_is_socket_inet</function></funcdef>
+ <paramdef>int <parameter>fd</parameter></paramdef>
+ <paramdef>int <parameter>family</parameter></paramdef>
+ <paramdef>int <parameter>type</parameter></paramdef>
+ <paramdef>int <parameter>listening</parameter></paramdef>
+ <paramdef>uint16_t <parameter>port</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_is_socket_unix</function></funcdef>
+ <paramdef>int <parameter>fd</parameter></paramdef>
+ <paramdef>int <parameter>type</parameter></paramdef>
+ <paramdef>int <parameter>listening</parameter></paramdef>
+ <paramdef>const char *<parameter>path</parameter></paramdef>
+ <paramdef>size_t <parameter>length</parameter></paramdef>
+ </funcprototype>
+
+ <funcprototype>
+ <funcdef>int <function>sd_is_special</function></funcdef>
+ <paramdef>int <parameter>fd</parameter></paramdef>
+ <paramdef>const char *<parameter>path</parameter></paramdef>
+ </funcprototype>
+
+ </funcsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para><function>sd_is_fifo()</function> may be called to check
+ whether the specified file descriptor refers to a FIFO or pipe. If
+ the <parameter>path</parameter> parameter is not
+ <constant>NULL</constant>, it is checked whether the FIFO is bound
+ to the specified file system path.</para>
+
+ <para><function>sd_is_socket()</function> may be called to check
+ whether the specified file descriptor refers to a socket. If the
+ <parameter>family</parameter> parameter is not
+ <constant>AF_UNSPEC</constant>, it is checked whether the socket
+ is of the specified family (AF_UNIX, <constant>AF_INET</constant>,
+ ...). If the <parameter>type</parameter> parameter is not 0, it is
+ checked whether the socket is of the specified type
+ (<constant>SOCK_STREAM</constant>,
+ <constant>SOCK_DGRAM</constant>, ...). If the
+ <parameter>listening</parameter> parameter is positive, it is
+ checked whether the socket is in accepting mode, i.e.
+ <function>listen()</function> has been called for it. If
+ <parameter>listening</parameter> is 0, it is checked whether the
+ socket is not in this mode. If the parameter is negative, no such
+ check is made. The <parameter>listening</parameter> parameter
+ should only be used for stream sockets and should be set to a
+ negative value otherwise.</para>
+
+ <para><function>sd_is_socket_inet()</function> is similar to
+ <function>sd_is_socket()</function>, but optionally checks the
+ IPv4 or IPv6 port number the socket is bound to, unless
+ <parameter>port</parameter> is zero. For this call
+ <parameter>family</parameter> must be passed as either
+ <constant>AF_UNSPEC</constant>, <constant>AF_INET</constant>, or
+ <constant>AF_INET6</constant>.</para>
+
+ <para><function>sd_is_socket_unix()</function> is similar to
+ <function>sd_is_socket()</function> but optionally checks the
+ <constant>AF_UNIX</constant> path the socket is bound to, unless
+ the <parameter>path</parameter> parameter is
+ <constant>NULL</constant>. For normal file system
+ <constant>AF_UNIX</constant> sockets, set the
+ <parameter>length</parameter> parameter to 0. For Linux abstract
+ namespace sockets, set the <parameter>length</parameter> to the
+ size of the address, including the initial 0 byte, and set the
+ <parameter>path</parameter> to the initial 0 byte of the socket
+ address.</para>
+
+ <para><function>sd_is_special()</function> may be called to check
+ whether the specified file descriptor refers to a special file. If
+ the <parameter>path</parameter> parameter is not
+ <constant>NULL</constant>, it is checked whether the file
+ descriptor is bound to the specified file name. Special files in
+ this context are character device nodes and files in
+ <filename>/proc</filename> or <filename>/sys</filename>.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Return Value</title>
+
+ <para>On failure, these calls return a negative errno-style error
+ code. If the file descriptor is of the specified type and bound to
+ the specified address, a positive return value is returned,
+ otherwise zero.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>Notes</title>
+
+ <xi:include href="libelogind-pkgconfig.xml" xpointer="pkgconfig-text"/>
+
+ <para>Internally, these function use a combination of
+ <filename>fstat()</filename> and
+ <filename>getsockname()</filename> to check the file descriptor
+ type and where it is bound to.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>See Also</title>
+ <para>
+ <citerefentry><refentrytitle>elogind</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>logind.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>elogind.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+ </para>
+ </refsect1>
</refentry>