]> andersk Git - moira.git/blob - lib/mr_connect.c
#define the zephyr stuff & add syslog definitions as well
[moira.git] / lib / mr_connect.c
1 /*
2  *      $Source$
3  *      $Author$
4  *      $Header$
5  *
6  *      Copyright (C) 1987 by the Massachusetts Institute of Technology
7  *      For copying and distribution information, please see the file
8  *      <mit-copyright.h>.
9  *      
10  *      This routine is part of the client library.  It handles
11  *      creating a connection to the sms server.
12  */
13
14 #ifndef lint
15 static char *rcsid_sms_connect_c = "$Header$";
16 #endif lint
17
18 #include <mit-copyright.h>
19 #include "sms_private.h"
20 #include <strings.h>
21
22 static char *sms_server_host = 0;
23
24 /*
25  * Open a connection to the sms server.
26  */
27
28 int sms_connect(server)
29 char *server;
30 {
31     extern int errno;
32     char *p;
33         
34     if (!sms_inited) sms_init();
35     if (_sms_conn) return SMS_ALREADY_CONNECTED;
36                 
37     /* 
38      * XXX should do a hesiod call to find the sms machine name & service
39      * number/name.
40      */
41     errno = 0;
42     if (!server || (strlen(server) == 0))
43       server = SMS_GDB_SERV;
44     _sms_conn = start_server_connection(server, ""); 
45     if (_sms_conn == NULL)
46         return errno;
47     if (connection_status(_sms_conn) == CON_STOPPED) {
48         register status = connection_errno(_sms_conn);
49         if (!status) status = SMS_CANT_CONNECT;
50         sms_disconnect();
51         return status;
52     }
53
54     /*
55      * stash hostname for later use
56      */
57
58     sms_server_host = strsave(server);
59     if (p = index(sms_server_host, ':'))
60         *p = 0;
61     sms_server_host = canonicalize_hostname(sms_server_host);
62     return 0;
63 }
64         
65 int sms_disconnect()
66 {
67     CHECK_CONNECTED;
68     _sms_conn = sever_connection(_sms_conn);
69     free(sms_server_host);
70     sms_server_host = 0;
71     return 0;
72 }
73
74 int sms_host(host, size)
75   char *host;
76   int size;
77 {
78     CHECK_CONNECTED;
79
80     /* If we are connected, sms_server_host points to a valid string. */
81     strncpy(host, sms_server_host, size);
82     return(0);
83 }
84
85 int sms_noop()
86 {
87     int status;
88     sms_params param_st;
89     struct sms_params *params = NULL;
90     struct sms_params *reply = NULL;
91
92     CHECK_CONNECTED;
93     params = &param_st;
94     params->sms_version_no = sending_version_no;
95     params->sms_procno = SMS_NOOP;
96     params->sms_argc = 0;
97     params->sms_argl = NULL;
98     params->sms_argv = NULL;
99         
100     if ((status = sms_do_call(params, &reply)) == 0)
101         status = reply->sms_status;
102         
103     sms_destroy_reply(reply);
104
105     return status;
106 }
This page took 0.079685 seconds and 5 git commands to generate.