tabbed-noxz

[fork] suckless tabbed - personal fork
git clone https://noxz.tech/git/tabbed-noxz.git
Log | Files | README | LICENSE

xembed.c
1/*
2 * See LICENSE file for copyright and license details.
3 */
4
5#include <fcntl.h>
6#include <stdio.h>
7#include <stdlib.h>
8#include <unistd.h>
9
10int
11main(int argc, char *argv[])
12{
13	char *xembed;
14	int tty;
15	pid_t pgrp, tcpgrp;
16
17	if (argc < 3) {
18		fprintf(stderr, "usage: %s flag cmd ...\n", argv[0]);
19		return 2;
20	}
21
22	if (!(xembed = getenv("XEMBED")))
23		goto noembed;
24
25	if ((tty = open("/dev/tty", O_RDONLY)) < 0)
26		goto noembed;
27
28	pgrp = getpgrp();
29	tcpgrp = tcgetpgrp(tty);
30
31	close(tty);
32
33	if (pgrp == tcpgrp) { /* in foreground of tty */
34		argv[0] = argv[2];
35		argv[2] = xembed;
36	} else {
37noembed:
38		argv += 2;
39	}
40
41	execvp(argv[0], argv);
42
43	perror(argv[0]); /* failed to execute */
44	return 1;
45}