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