Index | Thread | Search

From:
Claudio Jeker <cjeker@diehard.n-r-g.com>
Subject:
Re: use imsg_get_fd in file and tmux
To:
nicm@openbsd.org, tech@openbsd.org
Date:
Tue, 16 Jan 2024 12:26:01 +0100

Download raw body.

Thread
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')