summaryrefslogtreecommitdiff
path: root/lib/open.c
diff options
context:
space:
mode:
authorMartin Baulig <martin@home-of-linux.org>2000-01-01 20:56:53 +0000
committerMartin Baulig <martin@src.gnome.org>2000-01-01 20:56:53 +0000
commit75ed7287d1e4f4db9226b65d72f81f17eba7d684 (patch)
treecdc4e3d0cebb451a0e1e9fbb9419cf0877e57c9c /lib/open.c
parent8797d185873c0eed6cb0990bc8d4a7c0e915bb0f (diff)
downloadlibgtop-75ed7287d1e4f4db9226b65d72f81f17eba7d684.tar.gz
New directory. New directory. New directory.
2000-01-01 Martin Baulig <martin@home-of-linux.org> * backends/: New directory. * backends/server/: New directory. * backends/sysdeps/: New directory. * include/glibtop/backend.h: New file. * include/glibtop/call-vector.h.in: New file. Template file for `call-vector.h'. * include/glibtop/call-vector.pl: New file. Creates 'call-vector.h' from `call-vector.h.in'. * include/glibtop/errors.h (GLIBTOP_ERROR_NO_SUCH_BACKEND): New error constant. (GLIBTOP_ERROR_NOT_IMPLEMENTED): New error constant. * include/glibtop/limits.h (GLIBTOP_BACKEND_NAME_LEN): New constant. * glibtop-server-private.h (glibtop_server_private): Added `GSList *backend_list' and removed `input', `output', `socket' and `pid'. * lib/command.c: Removed. Moved to `backends/server/'. * lib/read.c: Removed. Moved to `backends/server/'. * lib/read_data.c: Removed. Moved to `backends/server/'. * lib/write.c: Removed. Moved to `backends/server/'.
Diffstat (limited to 'lib/open.c')
-rw-r--r--lib/open.c152
1 files changed, 0 insertions, 152 deletions
diff --git a/lib/open.c b/lib/open.c
index 0b41063c..fc40c7d7 100644
--- a/lib/open.c
+++ b/lib/open.c
@@ -32,160 +32,8 @@
#include <glibtop/gnuserv.h>
-/* Opens pipe to gtop server. Returns 0 on success and -1 on error. */
-
void
glibtop_open_l (glibtop *server, const char *program_name,
const unsigned long features, const unsigned flags)
{
- 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
- * do recursive calls to glibtop_init_r (). */
-
- server->flags |= _GLIBTOP_INIT_STATE_OPEN;
-
- server->error_method = GLIBTOP_ERROR_METHOD_DEFAULT;
-
-#ifdef DEBUG
- fprintf (stderr, "SIZEOF: %u - %u - %u - %u - %u - %u\n",
- sizeof (glibtop_command), sizeof (glibtop_response),
- sizeof (glibtop_mountentry), sizeof (glibtop_union),
- sizeof (glibtop_sysdeps), sizeof (glibtop_response_union));
-#endif
-
- switch (server->method) {
- case GLIBTOP_METHOD_DIRECT:
- server->features = 0;
- break;
- case GLIBTOP_METHOD_INET:
-#ifdef DEBUG
- fprintf (stderr, "Connecting to '%s' port %ld.\n",
- server->server_host, server->server_port);
-#endif
-
- connect_type = glibtop_make_connection
- (server->server_host, server->server_port,
- &server->_priv->socket);
-
-#ifdef DEBUG
- fprintf (stderr, "Connect Type is %d.\n", connect_type);
-#endif
-
- server->flags |= _GLIBTOP_INIT_STATE_SERVER;
-
- server->features = -1;
- break;
- case GLIBTOP_METHOD_UNIX:
-#ifdef DEBUG
- fprintf (stderr, "Connecting to Unix Domain Socket.\n");
-#endif
-
- connect_type = glibtop_make_connection
- ("unix", 0, &server->_priv->socket);
-
-#ifdef DEBUG
- fprintf (stderr, "Connect Type is %d.\n", connect_type);
-#endif
-
- server->flags |= _GLIBTOP_INIT_STATE_SERVER;
-
- server->features = -1;
- break;
- case GLIBTOP_METHOD_PIPE:
-#ifdef DEBUG
- fprintf (stderr, "Opening pipe to server (%s).\n",
- LIBGTOP_SERVER);
-#endif
-
- if (pipe (server->_priv->input) ||
- pipe (server->_priv->output))
- glibtop_error_io_r (server, "cannot make a pipe");
-
- server->_priv->pid = fork ();
-
- if (server->_priv->pid < 0) {
- glibtop_error_io_r (server, "fork failed");
- } else if (server->_priv->pid == 0) {
- close (0); close (1);
- 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->_priv->input [1]);
- close (server->_priv->output [0]);
-
- server->flags |= _GLIBTOP_INIT_STATE_SERVER;
-
- server->features = -1;
- break;
- }
-
- /* If the server has been started, ask it for its features. */
-
- if (server->flags & _GLIBTOP_INIT_STATE_SERVER) {
- char version [BUFSIZ], buffer [BUFSIZ];
- glibtop_sysdeps sysdeps;
- size_t size, nbytes;
-
- /* First check whether the server version is correct. */
-
- sprintf (version, LIBGTOP_VERSION_STRING,
- LIBGTOP_VERSION, LIBGTOP_SERVER_VERSION,
- sizeof (glibtop_command),
- sizeof (glibtop_response),
- sizeof (glibtop_union),
- sizeof (glibtop_sysdeps));
-
- size = strlen (version) + 1;
-
- glibtop_read_l (server, sizeof (nbytes), &nbytes);
-
- if (nbytes != size)
- glibtop_error_r (server,
- "Requested %u bytes but got %u.",
- size, nbytes);
-
- glibtop_read_l (server, nbytes, buffer);
-
- if (memcmp (version, buffer, size))
- glibtop_error_r (server, "server version is not %s",
- LIBGTOP_VERSION);
-
- /* Now ask it for its features. */
-
- glibtop_call_l (server, GLIBTOP_CMND_SYSDEPS, 0, NULL,
- sizeof (glibtop_sysdeps), &sysdeps,
- NULL);
-
- server->features = sysdeps.features;
-
- memcpy (&server->sysdeps, &sysdeps, sizeof (glibtop_sysdeps));
-
-#ifdef DEBUG
- fprintf (stderr, "Server features are %lu.\n",
- server->features);
-#endif
- }
-
- /* In any case, we call the open functions of our own sysdeps
- * directory. */
-
-#ifdef DEBUG
- fprintf (stderr, "Calling sysdeps open function.\n");
-#endif
-
- glibtop_init_s (&server, features, flags);
}