New file. This is a private header file which defines `struct

1999-12-19  Martin Baulig  <martin@home-of-linux.org>

	* glibtop-server-private.h: New file. This is a private header
	file which defines `struct _glibtop_server_private'.

	* glibtop.h (glibtop): Added `glibtop_server_private *_priv' field
	and moved some private fields there.
This commit is contained in:
Martin Baulig
1999-12-19 15:07:13 +00:00
committed by Martin Baulig
parent 339e1f4557
commit d4b712db86
9 changed files with 96 additions and 57 deletions

View File

@@ -37,14 +37,14 @@ glibtop_close_r (glibtop *server)
glibtop_call_l (server, GLIBTOP_CMND_QUIT,
0, NULL, 0, NULL, NULL);
if (close (server->socket))
if (close (server->_priv->socket))
glibtop_warn_io ("close");
break;
case GLIBTOP_METHOD_PIPE:
kill (server->pid, SIGKILL);
close (server->input [0]);
close (server->output [1]);
kill (server->_priv->pid, SIGKILL);
close (server->_priv->input [0]);
close (server->_priv->output [1]);
break;
}
}

View File

@@ -38,6 +38,10 @@ glibtop_open_l (glibtop *server, const char *program_name,
{
int connect_type;
if (!server->_priv)
server->_priv = glibtop_calloc_r
(server, 1, sizeof (glibtop_server_private));
server->name = program_name;
/* It is important to set _GLIBTOP_INIT_STATE_OPEN here when we
@@ -66,7 +70,7 @@ glibtop_open_l (glibtop *server, const char *program_name,
connect_type = glibtop_make_connection
(server->server_host, server->server_port,
&server->socket);
&server->_priv->socket);
#ifdef DEBUG
fprintf (stderr, "Connect Type is %d.\n", connect_type);
@@ -82,7 +86,7 @@ glibtop_open_l (glibtop *server, const char *program_name,
#endif
connect_type = glibtop_make_connection
("unix", 0, &server->socket);
("unix", 0, &server->_priv->socket);
#ifdef DEBUG
fprintf (stderr, "Connect Type is %d.\n", connect_type);
@@ -98,26 +102,28 @@ glibtop_open_l (glibtop *server, const char *program_name,
LIBGTOP_SERVER);
#endif
if (pipe (server->input) || pipe (server->output))
if (pipe (server->_priv->input) ||
pipe (server->_priv->output))
glibtop_error_io_r (server, "cannot make a pipe");
server->pid = fork ();
server->_priv->pid = fork ();
if (server->pid < 0) {
if (server->_priv->pid < 0) {
glibtop_error_io_r (server, "fork failed");
} else if (server->pid == 0) {
} else if (server->_priv->pid == 0) {
close (0); close (1);
close (server->input [0]); close (server->output [1]);
dup2 (server->input [1], 1);
dup2 (server->output [0], 0);
close (server->_priv->input [0]);
close (server->_priv->output [1]);
dup2 (server->_priv->input [1], 1);
dup2 (server->_priv->output [0], 0);
execl (LIBGTOP_SERVER, "libgtop-server", NULL);
glibtop_error_io_r (server, "execl (%s)",
LIBGTOP_SERVER);
_exit (2);
}
close (server->input [1]);
close (server->output [0]);
close (server->_priv->input [1]);
close (server->_priv->output [0]);
server->flags |= _GLIBTOP_INIT_STATE_SERVER;

View File

@@ -65,10 +65,10 @@ glibtop_read_l (glibtop *server, size_t size, void *buf)
fprintf (stderr, "LIBRARY: really reading %d bytes.\n", size);
#endif
if (server->socket) {
do_read (server->socket, buf, size);
if (server->_priv->socket) {
do_read (server->_priv->socket, buf, size);
} else {
ret = read (server->input [0], buf, size);
ret = read (server->_priv->input [0], buf, size);
}
if (ret < 0)

View File

@@ -39,10 +39,12 @@ glibtop_read_data_l (glibtop *server)
fprintf (stderr, "LIBRARY: reading %d data bytes.\n", sizeof (size_t));
#endif
if (server->socket) {
ret = recv (server->socket, (void *)&size, sizeof (size_t), 0);
if (server->_priv->socket) {
ret = recv (server->_priv->socket, (void *)&size,
sizeof (size_t), 0);
} else {
ret = read (server->input [0], (void *)&size, sizeof (size_t));
ret = read (server->_priv->input [0], (void *)&size,
sizeof (size_t));
}
if (ret < 0)
@@ -56,10 +58,10 @@ glibtop_read_data_l (glibtop *server)
ptr = glibtop_malloc_r (server, size);
if (server->socket) {
ret = recv (server->socket, ptr, size, 0);
if (server->_priv->socket) {
ret = recv (server->_priv->socket, ptr, size, 0);
} else {
ret = read (server->input [0], ptr, size);
ret = read (server->_priv->input [0], ptr, size);
}
if (ret < 0)

View File

@@ -38,10 +38,10 @@ glibtop_write_l (glibtop *server, size_t size, void *buf)
fprintf (stderr, "LIBRARY: really writing %d bytes.\n", size);
#endif
if (server->socket) {
ret = send (server->socket, buf, size, 0);
if (server->_priv->socket) {
ret = send (server->_priv->socket, buf, size, 0);
} else {
ret = write (server->output [1], buf, size);
ret = write (server->_priv->output [1], buf, size);
}
if (ret < 0)