subst.in 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/usr/bin/awk
  2. function which(c,path) {
  3. cmd = "test -x " c;
  4. if (system(cmd)==0) {
  5. return c;
  6. }
  7. sub(/\/.*\//,"",c);
  8. for (dir in path) {
  9. cmd = "test -x " path[dir] "/" c;
  10. if (system(cmd)==0) {
  11. return path[dir] "/" c;
  12. }
  13. }
  14. return c;
  15. }
  16. # used to replace "use lib utils.pm" with "use lib @libexecdir"
  17. #
  18. function led() {
  19. led1 = "@libexecdir@";
  20. led2 = "@exec_prefix@";
  21. led3 = "@prefix@";
  22. if ( match(led1, /^\$\{exec_prefix\}/ ) != 0 ) {
  23. return "\"" led3 "/libexec\" " ;
  24. }
  25. return "\"" led1 "\"" ;
  26. }
  27. BEGIN {
  28. split(ENVIRON["PATH"] ":/sbin:/usr/sbin",path,/:/);
  29. }
  30. # scripting language (first line)
  31. /^#! ?\/.*\/python/ {sub(/^#! ?\/.*\/python/,"#! @PYTHON@");}
  32. /^#! ?\/.*\/perl/ {sub(/^#! ?\/.*\/perl/,"#! @PERL@");}
  33. /^#! ?\/.*\/[a-z]{0,2}awk/ {sub(/^#! ?\/.*\/[a-z]{0,2}awk/,"#! @AWK@");}
  34. /^#! ?\/.*\/sh/ {sub(/^#! ?\/.*\/sh/,"#! @SHELL@");}
  35. # add to libexecdir to INC for perl utils.pm
  36. /^use/ { if (/lib/) { if (/utils.pm/ ) {sub(/utils.pm/,led() )} } }
  37. # Trusted path mechanism (deprecated)
  38. /^[ \t]*\$ENV[ \t]*\{[ \t'"]*PATH[ \t"']*\}[ \t]*=/ {
  39. sub(/\=[ \t]*['"][^"']+["']/,"='@trusted_path@' # autoconf-derived");
  40. }
  41. /^[\t ]*(export[\t ]*)?PATH[\t ]*=['"]+.+["']$/ {
  42. sub(/\=.*$/,"='@trusted_path@' # autoconf-derived");
  43. }
  44. # Specific programs
  45. #
  46. /^[^#]/ && /(\/.*)?\/(bin|sbin|lib|libexec)\// {
  47. match($0,/(\/.*)?\/(bin|sbin|lib|libexec)\/[-_a-zA-Z0-9]+/);
  48. start=RSTART+RLENGTH;
  49. c=substr($0,RSTART,RLENGTH);
  50. sub(c,which(c,path));
  51. }
  52. {
  53. print;
  54. }