mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-05 08:48:07 +02:00
* dbus/dbus-sysdeps-win.c: fixed broken DBusPipe on win32.
* dbus/dbus-sysdeps-win.c, dbus/dbus-sysdeps-unix.c: moved platform independent DBusPipe function to dbus-sysdeps.c.
This commit is contained in:
parent
288d47c783
commit
fabc977527
4 changed files with 97 additions and 125 deletions
|
|
@ -1,3 +1,12 @@
|
|||
2007-03-13 Ralf.Habacker <ralf.habacker@freenet.de>
|
||||
|
||||
* dbus/dbus-sysdeps-win.c: fixed broken DBusPipe on
|
||||
win32.
|
||||
|
||||
* dbus/dbus-sysdeps-win.c, dbus/dbus-sysdeps-unix.c:
|
||||
moved platform independent DBusPipe function to
|
||||
dbus-sysdeps.c.
|
||||
|
||||
2007-03-13 Ralf.Habacker <ralf.habacker@freenet.de>
|
||||
|
||||
* dbus/dbus-sysdeps-win.c: added zero byte sending
|
||||
|
|
|
|||
|
|
@ -169,30 +169,6 @@ _dbus_write_socket (int fd,
|
|||
return _dbus_write (fd, buffer, start, len);
|
||||
}
|
||||
|
||||
/**
|
||||
* init a pipe instance.
|
||||
*
|
||||
* @param pipe the pipe
|
||||
* @param fd the file descriptor to init from
|
||||
*/
|
||||
void
|
||||
_dbus_pipe_init (DBusPipe *pipe,
|
||||
int fd)
|
||||
{
|
||||
pipe->fd_or_handle = fd;
|
||||
}
|
||||
|
||||
/**
|
||||
* init a pipe with stdout
|
||||
*
|
||||
* @param pipe the pipe
|
||||
*/
|
||||
void
|
||||
_dbus_pipe_init_stdout (DBusPipe *pipe)
|
||||
{
|
||||
_dbus_pipe_init (pipe, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* write data to a pipe.
|
||||
*
|
||||
|
|
@ -244,41 +220,6 @@ _dbus_pipe_close (DBusPipe *pipe,
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* check if a pipe is valid; pipes can be set invalid, similar to
|
||||
* a -1 file descriptor.
|
||||
*
|
||||
* @param pipe the pipe instance
|
||||
* @returns #FALSE if pipe is not valid
|
||||
*/
|
||||
dbus_bool_t
|
||||
_dbus_pipe_is_valid(DBusPipe *pipe)
|
||||
{
|
||||
return pipe->fd_or_handle >= 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a pipe is stdout or stderr.
|
||||
*
|
||||
* @param pipe the pipe instance
|
||||
* @returns #TRUE if pipe is one of the standard out/err channels
|
||||
*/
|
||||
dbus_bool_t
|
||||
_dbus_pipe_is_stdout_or_stderr (DBusPipe *pipe)
|
||||
{
|
||||
return pipe->fd_or_handle == 1 || pipe->fd_or_handle == 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes a pipe to an invalid value.
|
||||
* @param pipe the pipe
|
||||
*/
|
||||
void
|
||||
_dbus_pipe_invalidate (DBusPipe *pipe)
|
||||
{
|
||||
pipe->fd_or_handle = -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Like _dbus_write_two() but only works on sockets and is thus
|
||||
* available on Windows.
|
||||
|
|
|
|||
|
|
@ -266,19 +266,6 @@ dbus_bool_t _dbus_fstat (DBusFile *file,
|
|||
return fstat(file->FDATA, sb) >= 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* init a pipe instance.
|
||||
*
|
||||
* @param fd the file descriptor to init from
|
||||
* @returns a DBusPipe instance
|
||||
*/
|
||||
DBusPipe _dbus_pipe_init(int fd)
|
||||
{
|
||||
DBusPipe pipe;
|
||||
pipe.fd = fd;
|
||||
return pipe;
|
||||
}
|
||||
|
||||
/**
|
||||
* write data to a pipe.
|
||||
*
|
||||
|
|
@ -286,35 +273,27 @@ DBusPipe _dbus_pipe_init(int fd)
|
|||
* @param buffer the buffer to write data from
|
||||
* @param start the first byte in the buffer to write
|
||||
* @param len the number of bytes to try to write
|
||||
* @param error error return
|
||||
* @returns the number of bytes written or -1 on error
|
||||
*/
|
||||
int
|
||||
_dbus_pipe_write (DBusPipe pipe,
|
||||
_dbus_pipe_write (DBusPipe *pipe,
|
||||
const DBusString *buffer,
|
||||
int start,
|
||||
int len)
|
||||
int len,
|
||||
DBusError *error)
|
||||
{
|
||||
DBusFile file;
|
||||
file.FDATA = pipe.fd;
|
||||
return _dbus_file_write(&file, buffer, start, len);
|
||||
}
|
||||
|
||||
/**
|
||||
* read data from a pipe.
|
||||
*
|
||||
* @param pipe the pipe instance
|
||||
* @param buffer the buffer to read data in
|
||||
* @param count the number of bytes to try to read
|
||||
* @returns the number of bytes read or -1 on error
|
||||
*/
|
||||
int
|
||||
_dbus_pipe_read(DBusPipe pipe,
|
||||
DBusString *buffer,
|
||||
int count)
|
||||
{
|
||||
DBusFile file;
|
||||
file.FDATA = pipe.fd;
|
||||
return _dbus_file_read(&file, buffer, count);
|
||||
int written;
|
||||
DBusFile file;
|
||||
file.FDATA = pipe->fd_or_handle;
|
||||
written = _dbus_file_write (&file, buffer, start, len);
|
||||
if (written < 0)
|
||||
{
|
||||
dbus_set_error (error, DBUS_ERROR_FAILED,
|
||||
"Writing to pipe: %s\n",
|
||||
_dbus_strerror (errno));
|
||||
}
|
||||
return written;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -324,37 +303,21 @@ _dbus_pipe_read(DBusPipe pipe,
|
|||
* @param error return location for an error
|
||||
* @returns #FALSE if error is set
|
||||
*/
|
||||
int
|
||||
_dbus_pipe_close(DBusPipe pipe,
|
||||
DBusError *error)
|
||||
int
|
||||
_dbus_pipe_close (DBusPipe *pipe,
|
||||
DBusError *error)
|
||||
{
|
||||
DBusFile file;
|
||||
file.FDATA = pipe.fd;
|
||||
return _dbus_file_close(&file, error);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if a pipe is valid, which means is constructed
|
||||
* by a valid file descriptor
|
||||
*
|
||||
* @param pipe the pipe instance
|
||||
* @returns #FALSE if pipe is not valid
|
||||
*/
|
||||
dbus_bool_t _dbus_pipe_is_valid(DBusPipe pipe)
|
||||
{
|
||||
return pipe.fd >= 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* check if a pipe is a special pipe, which means using
|
||||
* a non default file descriptor (>2)
|
||||
*
|
||||
* @param pipe the pipe instance
|
||||
* @returns #FALSE if pipe is not a special pipe
|
||||
*/
|
||||
dbus_bool_t _dbus_pipe_is_special(DBusPipe pipe)
|
||||
{
|
||||
return pipe.fd > 2;
|
||||
DBusFile file;
|
||||
file.FDATA = pipe->fd_or_handle;
|
||||
if (_dbus_file_close (&file, error) < 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_dbus_pipe_invalidate (pipe);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#undef FDATA
|
||||
|
|
|
|||
|
|
@ -172,6 +172,65 @@ _dbus_getenv (const char *varname)
|
|||
return getenv (varname);
|
||||
}
|
||||
|
||||
/*
|
||||
* init a pipe instance.
|
||||
*
|
||||
* @param pipe the pipe
|
||||
* @param fd the file descriptor to init from
|
||||
*/
|
||||
void
|
||||
_dbus_pipe_init (DBusPipe *pipe,
|
||||
int fd)
|
||||
{
|
||||
pipe->fd_or_handle = fd;
|
||||
}
|
||||
|
||||
/**
|
||||
* init a pipe with stdout
|
||||
*
|
||||
* @param pipe the pipe
|
||||
*/
|
||||
void
|
||||
_dbus_pipe_init_stdout (DBusPipe *pipe)
|
||||
{
|
||||
_dbus_pipe_init (pipe, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if a pipe is valid; pipes can be set invalid, similar to
|
||||
* a -1 file descriptor.
|
||||
*
|
||||
* @param pipe the pipe instance
|
||||
* @returns #FALSE if pipe is not valid
|
||||
*/
|
||||
dbus_bool_t
|
||||
_dbus_pipe_is_valid(DBusPipe *pipe)
|
||||
{
|
||||
return pipe->fd_or_handle >= 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a pipe is stdout or stderr.
|
||||
*
|
||||
* @param pipe the pipe instance
|
||||
* @returns #TRUE if pipe is one of the standard out/err channels
|
||||
*/
|
||||
dbus_bool_t
|
||||
_dbus_pipe_is_stdout_or_stderr (DBusPipe *pipe)
|
||||
{
|
||||
return pipe->fd_or_handle == 1 || pipe->fd_or_handle == 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes a pipe to an invalid value.
|
||||
* @param pipe the pipe
|
||||
*/
|
||||
void
|
||||
_dbus_pipe_invalidate (DBusPipe *pipe)
|
||||
{
|
||||
pipe->fd_or_handle = -1;
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue