Merge branch 'dbus-1.2'
[platform/upstream/dbus.git] / dbus / dbus-pipe.c
1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2 /* dbus-pipe.c pipe implementation (internal to D-Bus implementation)
3  * 
4  * Copyright (C) 2002, 2003, 2006  Red Hat, Inc.
5  * Copyright (C) 2003 CodeFactory AB
6  *
7  * Licensed under the Academic Free License version 2.1
8  * 
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  * 
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22  *
23  */
24
25 #include "dbus-pipe.h"
26
27 /*
28  * init a pipe instance.
29  *
30  * @param pipe the pipe
31  * @param fd the file descriptor to init from 
32  */
33 void
34 _dbus_pipe_init (DBusPipe *pipe,
35                  int       fd)
36 {
37   pipe->fd_or_handle = fd;
38 }
39
40 /**
41  * init a pipe with stdout
42  *
43  * @param pipe the pipe
44  */
45 void
46 _dbus_pipe_init_stdout (DBusPipe *pipe)
47 {
48   _dbus_pipe_init (pipe, 1);
49 }
50
51 /**
52  * check if a pipe is valid; pipes can be set invalid, similar to
53  * a -1 file descriptor.
54  *
55  * @param pipe the pipe instance
56  * @returns #FALSE if pipe is not valid
57  */
58 dbus_bool_t
59 _dbus_pipe_is_valid(DBusPipe *pipe)
60 {
61   return pipe->fd_or_handle >= 0;
62 }
63
64 /**
65  * Check if a pipe is stdout or stderr.
66  *
67  * @param pipe the pipe instance
68  * @returns #TRUE if pipe is one of the standard out/err channels
69  */
70 dbus_bool_t
71 _dbus_pipe_is_stdout_or_stderr (DBusPipe *pipe)
72 {
73   return pipe->fd_or_handle == 1 || pipe->fd_or_handle == 2;
74 }
75
76 /**
77  * Initializes a pipe to an invalid value.
78  * @param pipe the pipe
79  */
80 void
81 _dbus_pipe_invalidate (DBusPipe *pipe)
82 {
83   pipe->fd_or_handle = -1;
84 }