[BACK]Return to ssh-keyscan.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/ssh-keyscan.c between version 1.17 and 1.18

version 1.17, 2001/02/21 07:37:04 version 1.18, 2001/03/03 06:53:12
Line 22 
Line 22 
 #include "buffer.h"  #include "buffer.h"
 #include "bufaux.h"  #include "bufaux.h"
 #include "log.h"  #include "log.h"
   #include "atomicio.h"
   
 static int argno = 1;           /* Number of argument currently being parsed */  static int argno = 1;           /* Number of argument currently being parsed */
   
Line 33 
Line 34 
 int timeout = 5;  int timeout = 5;
   
 int maxfd;  int maxfd;
 #define maxcon (maxfd - 10)  #define MAXCON (maxfd - 10)
   
 extern char *__progname;  extern char *__progname;
 fd_set read_wait;  fd_set read_wait;
Line 348 
Line 349 
 void  void
 confree(int s)  confree(int s)
 {  {
         close(s);  
         if (s >= maxfd || fdcon[s].c_status == CS_UNUSED)          if (s >= maxfd || fdcon[s].c_status == CS_UNUSED)
                 fatal("confree: attempt to free bad fdno %d", s);                  fatal("confree: attempt to free bad fdno %d", s);
           close(s);
         xfree(fdcon[s].c_namebase);          xfree(fdcon[s].c_namebase);
         xfree(fdcon[s].c_output_name);          xfree(fdcon[s].c_output_name);
         if (fdcon[s].c_status == CS_KEYS)          if (fdcon[s].c_status == CS_KEYS)
Line 408 
Line 409 
         buf[n - 1] = '\0';          buf[n - 1] = '\0';
         fprintf(stderr, "# %s %s\n", c->c_name, buf);          fprintf(stderr, "# %s %s\n", c->c_name, buf);
         n = snprintf(buf, sizeof buf, "SSH-1.5-OpenSSH-keyscan\r\n");          n = snprintf(buf, sizeof buf, "SSH-1.5-OpenSSH-keyscan\r\n");
         if (write(s, buf, n) != n) {          if (atomicio(write, s, buf, n) != n) {
                 error("write (%s): %s", c->c_name, strerror(errno));                  error("write (%s): %s", c->c_name, strerror(errno));
                 confree(s);                  confree(s);
                 return;                  return;
Line 468 
Line 469 
         gettimeofday(&now, NULL);          gettimeofday(&now, NULL);
         c = tq.tqh_first;          c = tq.tqh_first;
   
         if (c &&          if (c && (c->c_tv.tv_sec > now.tv_sec ||
             (c->c_tv.tv_sec > now.tv_sec ||              (c->c_tv.tv_sec == now.tv_sec && c->c_tv.tv_usec > now.tv_usec))) {
              (c->c_tv.tv_sec == now.tv_sec && c->c_tv.tv_usec > now.tv_usec))) {  
                 seltime = c->c_tv;                  seltime = c->c_tv;
                 seltime.tv_sec -= now.tv_sec;                  seltime.tv_sec -= now.tv_sec;
                 seltime.tv_usec -= now.tv_usec;                  seltime.tv_usec -= now.tv_usec;
Line 486 
Line 486 
             (errno == EAGAIN || errno == EINTR))              (errno == EAGAIN || errno == EINTR))
                 ;                  ;
   
         for (i = 0; i < maxfd; i++)          for (i = 0; i < maxfd; i++) {
                 if (FD_ISSET(i, &e)) {                  if (FD_ISSET(i, &e)) {
                         error("%s: exception!", fdcon[i].c_name);                          error("%s: exception!", fdcon[i].c_name);
                         confree(i);                          confree(i);
                 } else if (FD_ISSET(i, &r))                  } else if (FD_ISSET(i, &r))
                         conread(i);                          conread(i);
           }
   
         c = tq.tqh_first;          c = tq.tqh_first;
         while (c &&          while (c && (c->c_tv.tv_sec < now.tv_sec ||
                (c->c_tv.tv_sec < now.tv_sec ||              (c->c_tv.tv_sec == now.tv_sec && c->c_tv.tv_usec < now.tv_usec))) {
                 (c->c_tv.tv_sec == now.tv_sec && c->c_tv.tv_usec < now.tv_usec))) {  
                 int s = c->c_fd;                  int s = c->c_fd;
   
                 c = c->c_link.tqe_next;                  c = c->c_link.tqe_next;
                 conrecycle(s);                  conrecycle(s);
         }          }
Line 520 
Line 521 
                                 return (argv[argno++]);                                  return (argv[argno++]);
                         } else if (!strncmp(argv[argno], "-f", 2)) {                          } else if (!strncmp(argv[argno], "-f", 2)) {
                                 char *fname;                                  char *fname;
   
                                 if (argv[argno][2])                                  if (argv[argno][2])
                                         fname = &argv[argno++][2];                                          fname = &argv[argno++][2];
                                 else if (++argno >= argc) {                                  else if (++argno >= argc) {
Line 531 
Line 533 
                                         fname = NULL;                                          fname = NULL;
                                 lb = Linebuf_alloc(fname, error);                                  lb = Linebuf_alloc(fname, error);
                         } else                          } else
                                 error("ignoring invalid/misplaced option `%s'", argv[argno++]);                                  error("ignoring invalid/misplaced option `%s'",
                                       argv[argno++]);
                 } else {                  } else {
                         char *line;                          char *line;
   
                         line = Linebuf_getline(lb);                          line = Linebuf_getline(lb);
                         if (line)                          if (line)
                                 return (line);                                  return (line);
Line 580 
Line 584 
                 fatal("%s: fdlim_get: bad value", __progname);                  fatal("%s: fdlim_get: bad value", __progname);
         if (maxfd > MAXMAXFD)          if (maxfd > MAXMAXFD)
                 maxfd = MAXMAXFD;                  maxfd = MAXMAXFD;
         if (maxcon <= 0)          if (MAXCON <= 0)
                 fatal("%s: not enough file descriptors", __progname);                  fatal("%s: not enough file descriptors", __progname);
         if (maxfd > fdlim_get(0))          if (maxfd > fdlim_get(0))
                 fdlim_set(maxfd);                  fdlim_set(maxfd);
Line 588 
Line 592 
         memset(fdcon, 0, maxfd * sizeof(con));          memset(fdcon, 0, maxfd * sizeof(con));
   
         do {          do {
                 while (ncon < maxcon) {                  while (ncon < MAXCON) {
                         char *name;                          char *name;
   
                         host = nexthost(argc, argv);                          host = nexthost(argc, argv);

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.18