Diff for /qemu/slirp/misc.c between versions 1.1.1.6 and 1.1.1.10

version 1.1.1.6, 2018/04/24 17:41:11 version 1.1.1.10, 2018/04/24 19:02:48
Line 119  fork_exec(struct socket *so, const char  Line 119  fork_exec(struct socket *so, const char 
         char *bptr;          char *bptr;
         const char *curarg;          const char *curarg;
         int c, i, ret;          int c, i, ret;
           pid_t pid;
   
         DEBUG_CALL("fork_exec");          DEBUG_CALL("fork_exec");
         DEBUG_ARG("so = %lx", (long)so);          DEBUG_ARG("so = %lx", (long)so);
Line 142  fork_exec(struct socket *so, const char  Line 143  fork_exec(struct socket *so, const char 
                 }                  }
         }          }
   
         switch(fork()) {          pid = fork();
           switch(pid) {
          case -1:           case -1:
                 lprint("Error: fork failed: %s\n", strerror(errno));                  lprint("Error: fork failed: %s\n", strerror(errno));
                 close(s);                  close(s);
Line 151  fork_exec(struct socket *so, const char  Line 153  fork_exec(struct socket *so, const char 
                 return 0;                  return 0;
   
          case 0:           case 0:
                   setsid();
   
                 /* Set the DISPLAY */                  /* Set the DISPLAY */
                 if (do_pty == 2) {                  if (do_pty == 2) {
                         (void) close(master);                          (void) close(master);
 #ifdef TIOCSCTTY /* XXXXX */  #ifdef TIOCSCTTY /* XXXXX */
                         (void) setsid();  
                         ioctl(s, TIOCSCTTY, (char *)NULL);                          ioctl(s, TIOCSCTTY, (char *)NULL);
 #endif  #endif
                 } else {                  } else {
Line 179  fork_exec(struct socket *so, const char  Line 182  fork_exec(struct socket *so, const char 
                    close(s);                     close(s);
   
                 i = 0;                  i = 0;
                 bptr = strdup(ex); /* No need to free() this */                  bptr = qemu_strdup(ex); /* No need to free() this */
                 if (do_pty == 1) {                  if (do_pty == 1) {
                         /* Setup "slirp.telnetd -x" */                          /* Setup "slirp.telnetd -x" */
                         argv[i++] = "slirp.telnetd";                          argv[i++] = "slirp.telnetd";
Line 200  fork_exec(struct socket *so, const char  Line 203  fork_exec(struct socket *so, const char 
                 execvp(argv[0], (char **)argv);                  execvp(argv[0], (char **)argv);
   
                 /* Ooops, failed, let's tell the user why */                  /* Ooops, failed, let's tell the user why */
                   {          fprintf(stderr, "Error: execvp of %s failed: %s\n",
                           char buff[256];                  argv[0], strerror(errno));
   
                           snprintf(buff, sizeof(buff),  
                                    "Error: execvp of %s failed: %s\n",  
                                    argv[0], strerror(errno));  
                           write(2, buff, strlen(buff)+1);  
                   }  
                 close(0); close(1); close(2); /* XXX */                  close(0); close(1); close(2); /* XXX */
                 exit(1);                  exit(1);
   
          default:           default:
                   qemu_add_child_watch(pid);
                 if (do_pty == 2) {                  if (do_pty == 2) {
                         close(s);                          close(s);
                         so->s = master;                          so->s = master;
Line 266  void lprint(const char *format, ...) Line 264  void lprint(const char *format, ...)
     va_list args;      va_list args;
   
     va_start(args, format);      va_start(args, format);
     monitor_vprintf(cur_mon, format, args);      monitor_vprintf(default_mon, format, args);
     va_end(args);      va_end(args);
 }  }
   
 #ifdef BAD_SPRINTF  
   
 #undef vsprintf  
 #undef sprintf  
   
 /*  
  * Some BSD-derived systems have a sprintf which returns char *  
  */  
   
 int  
 vsprintf_len(string, format, args)  
         char *string;  
         const char *format;  
         va_list args;  
 {  
         vsprintf(string, format, args);  
         return strlen(string);  
 }  
   
 int  
 #ifdef __STDC__  
 sprintf_len(char *string, const char *format, ...)  
 #else  
 sprintf_len(va_alist) va_dcl  
 #endif  
 {  
         va_list args;  
 #ifdef __STDC__  
         va_start(args, format);  
 #else  
         char *string;  
         char *format;  
         va_start(args);  
         string = va_arg(args, char *);  
         format = va_arg(args, char *);  
 #endif  
         vsprintf(string, format, args);  
         return strlen(string);  
 }  
   
 #endif  
   
 void  void
 u_sleep(int usec)  u_sleep(int usec)
 {  {
Line 451  void slirp_connection_info(Slirp *slirp, Line 407  void slirp_connection_info(Slirp *slirp,
                        inet_ntoa(dst_addr), ntohs(dst_port),                         inet_ntoa(dst_addr), ntohs(dst_port),
                        so->so_rcv.sb_cc, so->so_snd.sb_cc);                         so->so_rcv.sb_cc, so->so_snd.sb_cc);
     }      }
   
       for (so = slirp->icmp.so_next; so != &slirp->icmp; so = so->so_next) {
           n = snprintf(buf, sizeof(buf), "  ICMP[%d sec]",
                        (so->so_expire - curtime) / 1000);
           src.sin_addr = so->so_laddr;
           dst_addr = so->so_faddr;
           memset(&buf[n], ' ', 19 - n);
           buf[19] = 0;
           monitor_printf(mon, "%s %3d %15s  -    ", buf, so->s,
                          src.sin_addr.s_addr ? inet_ntoa(src.sin_addr) : "*");
           monitor_printf(mon, "%15s  -    %5d %5d\n", inet_ntoa(dst_addr),
                          so->so_rcv.sb_cc, so->so_snd.sb_cc);
       }
 }  }

Removed from v.1.1.1.6  
changed lines
  Added in v.1.1.1.10


unix.superglobalmegacorp.com