Figure 2. Remote login server.
     main(argc, argv)
          int argc;
          char *argv[];
     {
          int f;
          struct sockaddr_in from;
          struct servent *sp;

          sp = getservbyname("login", "tcp");
          if (sp == NULL) {
               fprintf(stderr, "rlogind: tcp/login: unknown service\n");
               exit(1);
          }  
          ... 
     #ifndef DEBUG
          /* Disassociate server from controlling terminal */
          ...
     #endif
          
          sin.sin_port = sp->s_port;        /* Restricted port -- see section 5 */
          ...
          f = socket(AF_INET, SOCK_STREAM, 0);  
          ...  
          if (bind(f, (struct sockaddr *) &sin, sizeof (sin)) < 0) {
               ...
          } 
          ... 
          listen(f, 5); 
          for (;;) {
               int g, len = sizeof (from);
               
               g = accept(f, (struct sockaddr *) &from, &len);
               if (g < 0) { 
                    if (errno != EINTR)
                         syslog(LOG_ERR, "rlogind: accept: %m");
                    continue; 
               }    
               if (fork() == 0) { 
                    close(f);
                    doit(g, &from);
               }
               close(g);
          }
     }