1: # include   <stdio.h>
   2: # include   <sys/types.h>
   3: # include   <sys/socket.h>
   4: # include   <netinet/in.h>
   5: # include   <netdb.h>
   6: # include   <signal.h>
   7: # include   <setjmp.h>
   8: # include   <sccs.h>
   9: 
  10: SCCSID(@(#)lock.c	8.1	12/31/84)
  11: 
  12: /*
  13: ** start_up_lock_driver
  14: **	Attempt to start up a connection to the lock driver.
  15: **	We connect to a know address (a socket server sits there).
  16: **	If we get a connection on this location, than we are talking
  17: **	to the lock driver. If we timeout, then we assume the driver
  18: **	isn't there.
  19: **
  20: ** Returns
  21: **	File descriptor attached to the lock driver
  22: **	-1 on any error.
  23: **
  24: ** Trace Flags
  25: **	28
  26: */
  27: start_up_lock_driver()
  28: {
  29:     struct  sockaddr_in addr;       /* address to attach to for server */
  30:     register    int to_driver;  /* we can talk to the lock driver on this one */
  31:     auto        int hostlen;    /* length of the hostname */
  32:     register    char    *host;      /* name of this host */
  33:     char            hname[BUFSIZ];
  34:     struct      servent *ing_ser;
  35:     struct      hostent *myhost;
  36: 
  37: 
  38:     /*
  39: 	** Find out where the lock driver lives
  40: 	*/
  41:     if ( (ing_ser = getservbyname("ingreslock",(char *)0)) == 0 )
  42:     {
  43: #		ifdef xATR1
  44:         if ( tTf(28,4) )
  45:             perror("set_up_lock getservbyname");
  46: #		endif
  47:         return ( -1 );
  48:     }
  49: 
  50:     /*
  51: 	** Make our end of the socket
  52: 	*/
  53:     if ( (to_driver = socket(AF_INET,SOCK_STREAM,0)) == -1 )
  54:     {
  55: #		ifdef xATR1
  56:         if ( tTf(28,4) )
  57:             perror("set_up_lock socket");
  58: #		endif
  59:         return ( -1 );
  60:     }
  61: 
  62:     host = hname;
  63:     hostlen = BUFSIZ;
  64:     gethostname(hname,&hostlen);
  65:     if ( (myhost = gethostbyname(host)) == 0 )
  66:     {
  67: #	ifdef xATR1
  68:         if ( tTf(28,4) )
  69:             perror("set_up_lock gethostbyname");
  70: #	endif
  71:         close(to_driver);
  72:         return ( -1 );
  73:     }
  74:     bzero((char *) &addr,sizeof (addr));
  75:     bcopy(myhost->h_addr,(char *)&addr.sin_addr,myhost->h_length);
  76:     addr.sin_family = AF_INET;
  77:     addr.sin_port = ing_ser->s_port;
  78: 
  79: 
  80:     /*
  81: 	** Connect to the lock_driver
  82: 	*/
  83:     if ( connect(to_driver,&addr,sizeof (addr)) == -1 )
  84:     {
  85: #	ifdef xATR1
  86:         if ( tTf(28,4) )
  87:             perror("set_up_lock connect");
  88: #	endif
  89:         close(to_driver);
  90:         return ( -1 );
  91:     }
  92: 
  93: 
  94:     return ( to_driver );
  95: }/* start_up_lock_driver */
  96: 
  97: 
  98: struct servent *
  99: getservbyname(name, proto)
 100:     char *name, *proto;
 101: {
 102:     register struct servent *p;
 103:     register char **cp;
 104: 
 105:     setservent(0);
 106:     while (p = getservent()) {
 107:         if (strcmp(name, p->s_name) == 0)
 108:             goto gotname;
 109:         for (cp = p->s_aliases; *cp; cp++)
 110:             if (strcmp(name, *cp) == 0)
 111:                 goto gotname;
 112:         continue;
 113: gotname:
 114:         if (proto == 0 || strcmp(p->s_proto, proto) == 0)
 115:             break;
 116:     }
 117:     endservent();
 118:     return (p);
 119: }

Defined functions

getservbyname defined in line 98; used 1 times
  • in line 41
Last modified: 1986-04-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1061
Valid CSS Valid XHTML 1.0 Strict