3
0

openvt.c 766 B

1234567891011121314151617181920212223242526272829303132333435
  1. /* vi: set sw=4 ts=4: */
  2. /*
  3. * openvt.c - open a vt to run a command.
  4. *
  5. * busyboxed by Quy Tonthat <quy@signal3.com>
  6. * hacked by Tito <farmatito@tiscali.it>
  7. *
  8. * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  9. */
  10. /* getopt not needed */
  11. #include "libbb.h"
  12. int openvt_main(int argc, char **argv);
  13. int openvt_main(int argc, char **argv)
  14. {
  15. char vtname[sizeof(VC_FORMAT) + 2];
  16. if (argc < 3)
  17. bb_show_usage();
  18. /* check for illegal vt number: < 1 or > 63 */
  19. sprintf(vtname, VC_FORMAT, (int)xatou_range(argv[1], 1, 63));
  20. bb_daemonize_or_rexec(DAEMON_CLOSE_EXTRA_FDS, argv);
  21. /* grab new one */
  22. close(0);
  23. xopen(vtname, O_RDWR);
  24. dup2(0, STDOUT_FILENO);
  25. dup2(0, STDERR_FILENO);
  26. BB_EXECVP(argv[2], &argv[2]);
  27. _exit(1);
  28. }