[BACK]Return to proc.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/proc.c between version 1.19 and 1.20

version 1.19, 2020/10/26 19:00:37 version 1.20, 2021/02/11 09:39:29
Line 18 
Line 18 
   
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/queue.h>  #include <sys/queue.h>
   #include <sys/socket.h>
 #include <sys/uio.h>  #include <sys/uio.h>
 #include <sys/utsname.h>  #include <sys/utsname.h>
   
Line 45 
Line 46 
         struct event      ev_sigusr1;          struct event      ev_sigusr1;
         struct event      ev_sigusr2;          struct event      ev_sigusr2;
         struct event      ev_sigwinch;          struct event      ev_sigwinch;
   
           TAILQ_HEAD(, tmuxpeer) peers;
 };  };
   
 struct tmuxpeer {  struct tmuxpeer {
Line 58 
Line 61 
   
         void            (*dispatchcb)(struct imsg *, void *);          void            (*dispatchcb)(struct imsg *, void *);
         void             *arg;          void             *arg;
   
           TAILQ_ENTRY(tmuxpeer) entry;
 };  };
   
 static int      peer_check_version(struct tmuxpeer *, struct imsg *);  static int      peer_check_version(struct tmuxpeer *, struct imsg *);
Line 190 
Line 195 
   
         tp = xcalloc(1, sizeof *tp);          tp = xcalloc(1, sizeof *tp);
         tp->name = xstrdup(name);          tp->name = xstrdup(name);
           TAILQ_INIT(&tp->peers);
   
         return (tp);          return (tp);
 }  }
Line 207 
Line 213 
 void  void
 proc_exit(struct tmuxproc *tp)  proc_exit(struct tmuxproc *tp)
 {  {
           struct tmuxpeer *peer;
   
           TAILQ_FOREACH(peer, &tp->peers, entry)
               imsg_flush(&peer->ibuf);
         tp->exit = 1;          tp->exit = 1;
 }  }
   
Line 297 
Line 307 
         event_set(&peer->event, fd, EV_READ, proc_event_cb, peer);          event_set(&peer->event, fd, EV_READ, proc_event_cb, peer);
   
         log_debug("add peer %p: %d (%p)", peer, fd, arg);          log_debug("add peer %p: %d (%p)", peer, fd, arg);
           TAILQ_INSERT_TAIL(&tp->peers, peer, entry);
   
         proc_update_event(peer);          proc_update_event(peer);
         return (peer);          return (peer);
Line 305 
Line 316 
 void  void
 proc_remove_peer(struct tmuxpeer *peer)  proc_remove_peer(struct tmuxpeer *peer)
 {  {
           TAILQ_REMOVE(&peer->parent->peers, peer, entry);
         log_debug("remove peer %p", peer);          log_debug("remove peer %p", peer);
   
         event_del(&peer->event);          event_del(&peer->event);
Line 324 
Line 336 
 proc_toggle_log(struct tmuxproc *tp)  proc_toggle_log(struct tmuxproc *tp)
 {  {
         log_toggle(tp->name);          log_toggle(tp->name);
   }
   
   pid_t
   proc_fork_and_daemon(int *fd)
   {
           pid_t   pid;
           int     pair[2];
   
           if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pair) != 0)
                   fatal("socketpair failed");
           switch (pid = fork()) {
           case -1:
                   fatal("fork failed");
           case 0:
                   close(pair[0]);
                   *fd = pair[1];
                   if (daemon(1, 0) != 0)
                           fatal("daemon failed");
                   return (0);
           default:
                   close(pair[1]);
                   *fd = pair[0];
                   return (pid);
           }
 }  }

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.20