You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
720 B

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. /* Translate call of myself into call of same-named script in LIBDIR */
  6. /* The macro LIBDIR must be defined as a double-quoted string */
  7. int main (int argc, char **argv)
  8. {
  9. char *basename;
  10. char *fullname;
  11. char **newargs;
  12. int i;
  13. basename = strrchr(argv[0], '/');
  14. if (basename)
  15. basename++;
  16. else
  17. basename = argv[0];
  18. fullname = malloc(strlen(LIBDIR) + strlen(basename) + 2);
  19. sprintf(fullname, "%s/%s", LIBDIR, basename);
  20. newargs = malloc((argc+1) * sizeof(char *));
  21. newargs[0] = fullname;
  22. for (i = 1; i < argc; i++)
  23. newargs[i] = argv[i];
  24. newargs[argc] = NULL;
  25. execvp(fullname, newargs);
  26. return 1;
  27. }