xembed.c - tabbed - tab interface for application supporting Xembed
(HTM) git clone git://git.suckless.org/tabbed
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
xembed.c (694B)
---
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
10 int
11 main(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 {
37 noembed:
38 argv += 2;
39 }
40
41 execvp(argv[0], argv);
42
43 perror(argv[0]); /* failed to execute */
44 return 1;
45 }