1# install.awk 2# awk script to handle "make install". Goal is to eliminate need for 3# extra utilities (such as sh, mkdir, and cp). This is a hack. 4 5function mkinstalldirs(dir, i, ii, j, jj, s, comp, mkdir) 6{ 7 gsub("/", "\\", dir); ii = split(dir, s, " ") 8 print "@echo off" > install_bat 9 print "@echo off" > install_cmd 10 for (i = 1; i <= ii; i++) { 11 jj = split(s[i], comp, "\\"); dir = comp[1]; 12 for (j = 1; j <= jj; dir=dir "\\" comp[++j]) { 13 if (substr(dir, length(dir)) == ":" || mkdir[dir]) continue; 14 printf("if not exist %s\\*.* mkdir %s\n", dir, dir) > install_bat 15 printf("if not exist %s\\* mkdir %s\n", dir, dir) > install_cmd 16 mkdir[dir] = 1 17 } 18 } 19 close(install_bat); close(install_cmd) 20 system(install) 21} 22 23function cp(s, j, n, comp) 24{ 25 gsub("/", "\\", s); n = split(s, comp, " "); 26 print "@echo off" > install_bat 27 print "@echo off" > install_cmd 28 for (j = 1; j < n; j++) { 29 printf("copy %s %s\n", comp[j], comp[n]) > install_cmd 30 if (substr(comp[j], length(comp[j]), 1) == "*") 31 comp[j] = comp[j] ".*" 32 printf("copy %s %s\n", comp[j], comp[n]) > install_bat 33 } 34 close(install_bat); close(install_cmd) 35 system(install) 36} 37 38BEGIN{ 39install = "installg" 40install_bat = install ".bat"; install_cmd = install ".cmd" 41igawk_cmd = prefix "/bin/igawk.cmd" 42igawk_bat = prefix "/bin/igawk.bat" 43igawk = "pc/awklib/igawk" 44 45# Make the bin directory 46mkinstalldirs(prefix "/bin"); 47 48# Create igawk.cmd for OS/2 49printf("extproc sh %s/bin/igawk.cmd\nshift\n", prefix) > igawk_cmd 50while (getline < igawk) print $0 > igawk_cmd 51 52# Create igawk.bat for DOS 53printf("@sh igawk %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9", prefix) > igawk_bat 54 55# Do common 56cp(igawk " *awk.exe " prefix "/bin") 57mkinstalldirs(prefix "/lib/awk " prefix "/share/man/man1 " prefix "/share/info") 58cp("awklib/eg/lib/* pc/awklib/igawk.awk " prefix "/lib/awk"); 59cp("doc/*.1 " prefix "/share/man/man1"); 60cp("doc/gawk.info " prefix "/share/info"); 61cp("doc/gawkinet.info " prefix "/share/info"); 62} 63