/* See LICENSE file for copyright and license details. */
#include <sys/stat.h>

#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <unistd.h>

#include "util.h"

static void
usage(void)
{
	eprintf("usage: %s cmd [arg ...]\n", argv0);
}

int
main(int argc, char *argv[])
{
	int fd, savederrno;

	argv0 = argv[0], argc--, argv++;

	if (!argc)
		usage();

	if (signal(SIGHUP, SIG_IGN) == SIG_ERR)
		enprintf(127, "signal HUP:");

	if (isatty(STDOUT_FILENO)) {
		if ((fd = open("nohup.out", O_APPEND | O_CREAT, S_IRUSR | S_IWUSR)) < 0)
			enprintf(127, "open nohup.out:");
		if (dup2(fd, STDOUT_FILENO) < 0)
			enprintf(127, "dup2:");
		close(fd);
	}
	if (isatty(STDERR_FILENO) && dup2(STDOUT_FILENO, STDERR_FILENO) < 0)
		enprintf(127, "dup2:");

	execvp(argv[0], argv);
	savederrno = errno;
	weprintf("execvp %s:", argv[0]);

	_exit(126 + (savederrno == ENOENT));
}
