node.c 587 B

123456789101112131415161718192021222324252627282930
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <errno.h>
  6. #define NAME "node9"
  7. #define WRAP PREFIX "/bin/" NAME
  8. #define REAL PREFIX "/libexec/" NAME "/node"
  9. int main(int argn, char **argv)
  10. {
  11. char *path;
  12. argv[0] = REAL;
  13. if ((path = getenv("NODE")) != NULL)
  14. if (strcmp(path, NAME) != 0 && strcmp(path, WRAP) != 0)
  15. argv[0] = path;
  16. if (execvp(argv[0], argv) == -1) {
  17. fprintf(stderr, "node: ERROR: failed to execute \"%s\": %s\n", argv[0], strerror(errno));
  18. exit(1);
  19. }
  20. return 0;
  21. }