]> andersk Git - moira.git/commitdiff
changed algorithm for getting name of server to connect to
authormar <mar>
Mon, 5 Feb 1990 12:48:18 +0000 (12:48 +0000)
committermar <mar>
Mon, 5 Feb 1990 12:48:18 +0000 (12:48 +0000)
lib/mr_connect.c

index f701fd1bfcfbcc7855c9a8fec2121755c0b985a0..366166ad9c06ae31c0cad5f52da0b1b7125226ae 100644 (file)
@@ -23,25 +23,44 @@ static char *rcsid_sms_connect_c = "$Header$";
 static char *sms_server_host = 0;
 
 /*
- * Open a connection to the sms server.
+ * Open a connection to the sms server.  Looks for the server name
+ * 1) passed as an argument, 2) in environment variable, 3) by hesiod
+ * 4) compiled in default (from sms_app.h).
  */
 
 int sms_connect(server)
 char *server;
 {
     extern int errno;
-    char *p;
+    char *p, **pp, sbuf[256];
+    extern char *getenv(), **hes_resolve();
        
     if (!sms_inited) sms_init();
     if (_sms_conn) return SMS_ALREADY_CONNECTED;
                
-    /* 
-     * XXX should do a hesiod call to find the sms machine name & service
-     * number/name.
-     */
+    if (!server || (strlen(server) == 0)) {
+       server = getenv("MOIRASERVER");
+    }
+
+#ifdef HESIOD
+    if (!server || (strlen(server) == 0)) {
+       pp = hes_resolve("moira", "sloc");
+       if (pp) server = *pp;
+    }
+#endif HESIOD
+
+    if (!server || (strlen(server) == 0)) {
+       server = SMS_SERVER;
+    }
+
+    if (!index(server, ':')) {
+       p = index(SMS_SERVER, ':');
+       p++;
+       sprintf(sbuf, "%s:%s", server, p);
+       server = sbuf;
+    }
+
     errno = 0;
-    if (!server || (strlen(server) == 0))
-      server = SMS_SERVER;
     _sms_conn = start_server_connection(server, ""); 
     if (_sms_conn == NULL)
        return errno;
This page took 0.066807 seconds and 5 git commands to generate.