Index | Thread | Search

From:
Nicholas Marriott <nicholas.marriott@gmail.com>
Subject:
Re: use imsg_get_fd in file and tmux
To:
Nicholas Marriott <nicm@openbsd.org>, tech <tech@openbsd.org>
Date:
Tue, 16 Jan 2024 12:58:45 +0000

Download raw body.

Thread
looks fine, ok nicm



On Tue, 16 Jan 2024, 11:26 Claudio Jeker, <cjeker@diehard.n-r-g.com> wrote:

> On Wed, Dec 13, 2023 at 12:53:57PM +0100, Claudio Jeker wrote:
> > Use imsg_get_fd() from the new imsg API in file and tmux.
> >
> > In tmux it shows how using imsg_get_fd() everywhere will allow to
> simplify
> > fd handling with imsgs since the code in proc.c will become redundant in
> > the future.
> >
> > file regress still pass and tmux still works for me.
>
> ping
>
> --
> :wq Claudio
>
> Index: usr.bin/file/file.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/file/file.c,v
> diff -u -p -r1.69 file.c
> --- usr.bin/file/file.c 30 Nov 2019 14:01:45 -0000      1.69
> +++ usr.bin/file/file.c 13 Dec 2023 10:06:43 -0000
> @@ -418,12 +418,12 @@ child(int fd, pid_t parent, int argc, ch
>                 inf.msg = msg;
>
>                 inf.path = argv[idx];
> -               inf.fd = imsg.fd;
> +               inf.fd = imsg_get_fd(&imsg);
>
>                 test_file(&inf, width);
>
> -               if (imsg.fd != -1)
> -                       close(imsg.fd);
> +               if (inf.fd != -1)
> +                       close(inf.fd);
>                 imsg_free(&imsg);
>
>                 ack.idx = idx;
> Index: usr.bin/tmux/proc.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/tmux/proc.c,v
> diff -u -p -r1.22 proc.c
> --- usr.bin/tmux/proc.c 30 May 2022 12:48:57 -0000      1.22
> +++ usr.bin/tmux/proc.c 13 Dec 2023 10:10:46 -0000
> @@ -92,8 +92,9 @@ proc_event_cb(__unused int fd, short eve
>                         log_debug("peer %p message %d", peer,
> imsg.hdr.type);
>
>                         if (peer_check_version(peer, &imsg) != 0) {
> -                               if (imsg.fd != -1)
> -                                       close(imsg.fd);
> +                               int fd = imsg_get_fd(&imsg);
> +                               if (fd != -1)
> +                                       close(fd);
>                                 imsg_free(&imsg);
>                                 break;
>                         }
> Index: usr.bin/tmux/server-client.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/tmux/server-client.c,v
> diff -u -p -r1.402 server-client.c
> --- usr.bin/tmux/server-client.c        2 Sep 2023 20:03:10 -0000
>  1.402
> +++ usr.bin/tmux/server-client.c        13 Dec 2023 10:09:29 -0000
> @@ -3000,14 +3000,14 @@ server_client_dispatch_identify(struct c
>         case MSG_IDENTIFY_STDIN:
>                 if (datalen != 0)
>                         fatalx("bad MSG_IDENTIFY_STDIN size");
> -               c->fd = imsg->fd;
> -               log_debug("client %p IDENTIFY_STDIN %d", c, imsg->fd);
> +               c->fd = imsg_get_fd(imsg);
> +               log_debug("client %p IDENTIFY_STDIN %d", c, c->fd);
>                 break;
>         case MSG_IDENTIFY_STDOUT:
>                 if (datalen != 0)
>                         fatalx("bad MSG_IDENTIFY_STDOUT size");
> -               c->out_fd = imsg->fd;
> -               log_debug("client %p IDENTIFY_STDOUT %d", c, imsg->fd);
> +               c->out_fd = imsg_get_fd(imsg);
> +               log_debug("client %p IDENTIFY_STDOUT %d", c, c->out_fd);
>                 break;
>         case MSG_IDENTIFY_ENVIRON:
>                 if (datalen == 0 || data[datalen - 1] != '\0')
>
>
>