diff options
author | Martin Baulig <martin@home-of-linux.org> | 2000-01-01 20:56:53 +0000 |
---|---|---|
committer | Martin Baulig <martin@src.gnome.org> | 2000-01-01 20:56:53 +0000 |
commit | 75ed7287d1e4f4db9226b65d72f81f17eba7d684 (patch) | |
tree | cdc4e3d0cebb451a0e1e9fbb9419cf0877e57c9c /lib/open.c | |
parent | 8797d185873c0eed6cb0990bc8d4a7c0e915bb0f (diff) | |
download | libgtop-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.c | 152 |
1 files changed, 0 insertions, 152 deletions
@@ -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); } |